- PVSM.RU - https://www.pvsm.ru -

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

22 мая состоялся релиз LLVM 3.1 [1], семейства компиляторных инструментов, построенных на модульной основе. Проект активно развивается как альтернатива GCC такими компаниями, как Apple и Google.

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

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

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

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

LLVM 3.1 также включает в себя DragonEgg [5] — 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 [1]. А попробовать компилятор — скачав его в бинариях или сорсах [6] с сайта проекта.

Автор: DmitryBabokin


Сайт-источник PVSM.RU: https://www.pvsm.ru

Путь до страницы источника: https://www.pvsm.ru/clang/8122

Ссылки в тексте:

[1] состоялся релиз LLVM 3.1: http://llvm.org/releases/3.1/docs/ReleaseNotes.html

[2] улучшенную поддержку нового стандарта C++'11: http://clang.llvm.org/cxx_status.html

[3] AddressSanitizer: http://code.google.com/p/address-sanitizer/

[4] Clang Static Analyzer: http://clang-analyzer.llvm.org/

[5] DragonEgg: http://dragonegg.llvm.org/

[6] бинариях или сорсах: http://llvm.org/releases/download.html#3.1