30.11.2011 в свет вышла очередная версия фреймворка для построения компиляторов и виртуальных машин.
Википедия
Low Level Virtual Machine (LLVM) — универсальная система анализа, трансформации и оптимизации программ, реализующая виртуальную машину с RISC-подобными инструкциями. Может использоваться как оптимизирующий компилятор этого байткода в машинный код для различных архитектур либо для его интерпретации и JIT-компиляции (для некоторых платформ).
Проект LLVM официально включает в себя следующие основные проекты:
- LLVMCore - библиотеки для обеспечения платформонезависимой оптимизации и кодогенерации под различные виды процессоров и платформ;
- CLang - компилятор языков C/C++/Objective-C для LLVM;
- dragonegg - объединяет в себе парсер GCC-4.5 и оптимизацию и кодогенерацию на основе библиотек LLVM;
- LLDB - дебаггер, использует Clang и LLVM;
- libc++ - реализация стандартной библиотеки C++ (включает неполную поддержку стандарта C++11);
- vmkit - реализация языков Java и .Net для LLVM;
- SAFECode - память-безопасный компилятор С/С++.
Помимо упомянутых официальных проектов существует большое количество проектов, которые используют LLVM для компиляции программ для таких языков как Ruby, Python, Haskell, Java, D, PHP, Lua и т.д.
Основные изменения:
- llvm-gcc больше не поддерживается, рекомендуется использовать clang или dragonegg;
- LLVM IR (intermediate representation - платформонезависимый ассемблер для LLVM) включает в себя полную поддержку атомарных операций с памятью (load, store, compare, exchange, read/modify/write, etc.);
- полностью переделан механизм обработки исключений в LLVM IR;
- полностью переделана система типов LLVM IR;
- MIPS backend доведён до production quality;
- ...
Полный и подробный перечень изменений можно посмотреть в подробностях.
В настоящее время для скачивания доступен только исходный код (через svn). В ближайшее время на сайте в списке закачек ожидается появление бинарных сборок и тарболла.