22 мая состоялся релиз LLVM 3.1, семейства компиляторных инструментов, построенных на модульной основе. Проект активно развивается как альтернатива GCC такими компаниями, как Apple и Google.
Наиболее заметные изменения включают в себя улучшенную поддержку нового стандарта C++'11 Clang'ом (включая лямбды, списки инициализации, константные выражения, пользовательские литералы и атомики); появление AddressSanitizer — инструмента для динамического отлова ошибок работы с памятью; серьёзные улучшения времени компиляции и появление новых фич для ARM архитектуры; заметно улучшенная поддержка архитектуры MIPS (включая MIPS64).
Для тех, кому интересны подробности — добро пожаловать под кат.
Напомню, что главный инструмент 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. А попробовать компилятор — скачав его в бинариях или сорсах с сайта проекта.
Наиболее заметные изменения включают в себя улучшенную поддержку нового стандарта C++'11 Clang'ом (включая лямбды, списки инициализации, константные выражения, пользовательские литералы и атомики); появление AddressSanitizer — инструмента для динамического отлова ошибок работы с памятью; серьёзные улучшения времени компиляции и появление новых фич для ARM архитектуры; заметно улучшенная поддержка архитектуры MIPS (включая MIPS64).
Для тех, кому интересны подробности — добро пожаловать под кат.
Напомню, что главный инструмент 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. А попробовать компилятор — скачав его в бинариях или сорсах с сайта проекта.