Как стать автором
Обновить

Состоялся релиз LLVM 3.1

Время на прочтение2 мин
Количество просмотров4.5K
22 мая состоялся релиз LLVM 3.1, семейства компиляторных инструментов, построенных на модульной основе. Проект активно развивается как альтернатива GCC такими компаниями, как Apple и Google.

Наиболее заметные изменения включают в себя улучшенную поддержку нового стандарта C++'11 Clang'ом (включая лямбды, списки инициализации, константные выражения, пользовательские литералы и атомики); появление AddressSanitizer — инструмента для динамического отлова ошибок работы с памятью; серьёзные улучшения времени компиляции и появление новых фич для ARM архитектуры; заметно улучшенная поддержка архитектуры MIPS (включая MIPS64).
image

Для тех, кому интересны подробности — добро пожаловать под кат.

Напомню, что главный инструмент LLVM — это Clang, «родной» для платформы Mac компилятор языков C / C++ / Objective C. Компилятор также доступен на других основных платформах — Linux и Windows. Правда, поддержка Windows до сих пор носит экспериментальный характер. Этот компилятор выгодно отличается от конкурентов скоростью работы и мощной и точной диагностикой ошибок. Для тех, кто ищет альтернативу GCC, но не хочет отказываться от open-source продуктов, новый релиз — это отличный повод попробовать этот компилятор.

Наверно, главной интересной фичей в LLVM 3.1 является появление AddressSanitizer среди стандартных тулов — инструмента для динамического поиска ошибок работы с памятью. Этот инструмент, рождённый в недрах Гугла, позволяет поймать переполнения буфера (в куче, на стеке, в глобалах) и use-after-free ошибки, при относительно небольшом замедлении исполнения (порядка двух раз). Это очень хороший довесок к уже существующему инструменту статической верификации кода Clang Static Analyzer.

LLVM 3.1 также включает в себя DragonEgg — GCC plug-in, подменяющий gcc оптимизатор кодогенератором LLVM. Новый релиз полностью поддерживает GCC 4.5 и 4.6 и частично только что вышедший 4.7. Полностью поддерживаются языки Ada, C, C++ и Fortran, частично Go, Java, Obj-C и Obj-C++. Как мы видим, хоть GCC фронтэнд и перестал быть основным для LLVM, этот подпроект продолжает активно развиваться.

Полный список изменений можно найти в release notes. А попробовать компилятор — скачав его в бинариях или сорсах с сайта проекта.
Теги:
Хабы:
Всего голосов 37: ↑36 и ↓1+35
Комментарии45

Публикации