Спустя полгода активной разработки анонсирован выход версии 2.8 набора компиляторов LLVM , распространяемых по условиям BSD-подобной лицензии UIUC. Одновременно вышли и обновления подпроектов LLVM: компилятора C/C++ — Clang, модифицированной версии GCC 4.2.x (использует LLVM для генерации кода) — llvm-gcc, плагина для GCC 4.5 (и выше) — dragonegg.
Наиболее значимые изменения:
- в основной проект вошел отладчик LLDB;
- другим дополнением проекта стала замена libstdc++ — совместимая с C++0x стандартом библиотека libc++;
- LLVM Machine Code (MC) — подсистема для поддержки ассемблирования, дизассемблирования и обработки бинарных форматов файлов (подробности в блоге);
К сожалению, вышеперечисленные новшества реализованы в LLVM 2.8 только для платформ Mac OS X (x86 и x86-64).
- llvm-diff для семантического сравнивания .ll-файлов.
В числе других изменений можно отметить:
- оптимизация внутренних функций работы с памятью;
- более эффективная отладка за счет генерации метаданных для отладчика в режиме реального времени;
- более эффективная оптимизация циклов, вложенности функций (inlining), -loweratomic pass;
- Clang теперь поддерживает ключи -momit-leaf-frame-pointer, -ffunction-sections, -fdata-sections;
- значительно улучшен аллокатор регистров (особенно для -O0), возможен выбор алллокатора (в зависимости от ключа -O) при использовании ключа -regalloc=default, также будет задействованы SSE-регистры;
- множество процессор-специфичных оптимизаций для платформ ARM и x86 (SSE, AVX, NEON).
Просмотреть полный список изменений (также по ссылке доступен и список нерешённых проблем выпуска).
Ознакомиться с материалами конференции разработчиков LLVM, прошедшей перед выпуском.
Загрузить source-tarballs.
>>> Сайт проекта