16.09.2011: Вышла версия 2.6 инструмента верификации BLAST
Центр верификации Linux опубликовал новую версию свободного инструмента верификации BLAST 2.6, который автоматически анализирует Си-программы на предмет нарушения заданных правил корректности посредством реализации метода итеративного уточнения абстракции программы на основе контр-примеров CEGAR.
Версия BLAST 2.6 стала результатом улучшений, внесённых специалистами Центра верификации Linux в рамках программы Linux Driver Verification в версию BLAST 2.5, которая была разработана командой европейских и американских учёных и развитие которой приостановилось в середине 2008 года.
Основные улучшения коснулись следующих направлений.
- Ускорении работы
- Общее ускорение анализа в 8 раз для маленьких программ и в 30 раз для программ среднего размера
- Реализация логарифмического алгоритма useful-blocks для ускорения анализа трассы
-
Улучшенная интеграция с SMT солверами
- эффективная конкатенация строк
- кеширование конвертированных формул
- оптимизация опций CVC3 для типовых задач BLAST
- Нормализация формул передана солверам, где это реализовано более эффективно(опция -skipnorm)
-
Ускорение анализа алиасов
- must-алиасы обрабатываются независимо и быстрее, чем may-алиасы (опция -nomusts)
- удалена отладочная печать из основных циклов, где даже проверка флага debug занимала в совокупности значительное время
- Настройка виртуальной машины OCaml для эффективной работы инструмента BLAST (скрипт "ocamltune")
- Исправления существенных ошибок
-
Исправление некорректного анализа при включённой опции использования решёток (опции -stop-sep и -merge). (За счет этого время анализа возросло в 1.5 раза, но исчезли ошибки, приводящие к ненахождению ошибок в анализируемой программе). См. проблему #330
- Кастирование bool-to-int при вызове функций. См. проблему #334
- Парсер
- Обновлён парсер (CIL), исправлен ряд ошибок (см. опции -ignoredupfn и -nosserr)
- Некоторые несущественные ошибки сделаны предупреждениями
- Новые возможности
- Реализованы опции ограничения глубины анализируемого стека вызовов (см. опции -fdepth, -important-attrs и -inline-attrs)
- Интерпретация константных указателей как must-алиасов (см. опцию -const)
- Улучшения в инфраструктуре
- Улучшен набор регрессионных тестов
- Удалены несвободные компоненты (солвер simplify заменен на CVC3, удалены неиспользуемые Vampyre, FOCI и CLPprover)
Скачать исходные коды и бинарные сборки для платформы Linux можно из раздела Files сайта проекта. Также смотрите страницу оригинального проекта.