Увидел свет Релиз Clang с технологией SAFECode.
Увидел свет 0 новый выпуск являющегося частью проекта LLVM компилятора Clang с технологией SAFECODE.
Эта технология предназначена для отслеживания возможных проблем работы с памятью в разрабатываемом приложении, при этом не изменяет поведение компилятора, когда неактивна. Включить её возможно ч/з указание специального ключа командной строки при сборке. Преимуществами в сравнении с подобным инструментом как Valgrind являются:
более информативные сообщения об ошибках;
возможность оптимизации некоторых run-time проверок;
отсутствие динамической трансляции как у Valgrind;
более точно определяет структуру утилиты, так как знает расположение границ отдельно взятого стека и обширных объектов (для поиска таких границ Valgrind использует эвристические методы).
Теперь технология дает возможность отслеживать разыменования указателей, которые могут вызвать переполнение буфера. В последующем планируется внести из проекта SAFECODE в Clang:
выявление некорректного доступа к памяти (указатели на несуществующий или удаленный объект);
определение неправильных вызовов функции free(), к примеру, двойное освобождение выделенной памяти;
определение эксплуатации неинициализированных указателей;
выявление ошибок при работе с памятью, вызванных неправильным использованием функций стандартной библиотеки;
бонусные оптимизации, включая удаление проверок корректности типов на этапе загрузки/сохранения и вынос за границы циклов.
Clang это фронт-энд компиляторов С/С++, Objective-C, который разрабатывается на замену GCC в BSD-системах. Любопытен может оказаться к тому же большим корпорациям благодаря лицензии BSD. С помощью Clang уже удалось собрать ядро Линукс и фреймворк Qt.