Pull to refresh

LLVM 3.0 Release

Reading time 2 min
Views 2.1K
1 декабря состоялся релиз LLVM 3.0 (Low Level Virtual Machine) — «инфраструктуры для компиляторов», которая генерирует платформонезависимый оптимизированный байткод низкого уровня (см. обзор на Хабре). LLVM используется в том числе в официальных средствах разработки для Mac OS X и iOS.

С момента выхода LLVM 2.9 прошло шесть месяцев, новшеств довольно много, в том числе новый «жадный» аллокатор регистров. Он применяет интересные способы оптимизации и способен значительно улучшить производительность кода.

Из других улучшений в LLVM: появилась полная поддержка атомарных операций и модели памяти C++, сильно усовершенствован MIPS-бэкенд, появилась поддержка профилирования gprof и gcov.

Разработчики говорят, что хотя это инкрементальный релиз, но мажорный номер версии «позволил избавиться от старого багажа». В частности, LLVM 3.0 больше не поддерживает фронт-энд llvm-gcc. Вместо него рекомендуют Clang или Dragonegg. Первый лучше для C, а Dragonegg — для тех, кто хочет получить использовать GCC через плагин. Связка из GCC-фронтэнда и LLVM-бэкенда поддерживает языки C, C++, Фортран и Ада, частично Java, Objective-C, Objective-C++ и Google Go.

LLVM 3.0 также не принимает файлы .bc или  .ll от LLVM 2.8 или более ранних версий. Новый формат файлов обещают сделать стабильным навсегда, так что после версии 3.0 он уже меняться не будет.

В комплекте с LLVM 3.0 идёт компилятор Clang 3.0, который в последнее время сильно прибавил в производительности и тоже добавил несколько важных фич (см. release notes), в том числе расширена поддержка C'1x и C++'11 (C++'0x), добавлена поддержка автоматического подсчёта ссылок (Automatic Reference Counting) из Objective-C.

В результате Clang сам работает быстрее, компилирует более быстрый код и лучше обрабатывает ошибки, чем LLVM 2.9 при использовании GCC.
Tags:
Hubs:
+26
Comments 7
Comments Comments 7

Articles