Язык программирования Python → Unladen Swallow 2009Q3
Тихо и совершенно, как говорится, незаметно, запоздало вышла ветка 2009Q3 интересного и перспективного проекта Unladen Swallow.
.NET → LLVM в качестве кодогенератора для Mono
Теперь в качестве JIT компилятора для Mono может вместо "родного" использоваться LLVM. LLVM более требовательна к памяти и процесс компиляции занимает больше времени, зато результат радует — например, производительность в SciMark выросла с 482 до 610.
Язык программирования Python → Unladen Swallow 2009Q2
Сегодня утром вышел второй релиз проекта Unladen Swallow, цель которого — увеличение производительности интерпретатора CPython в пять раз. Эта версия примечательна тем, что впервые, для генерации кода используется LLVM, а также полной совместимостью с многими библиотеками.
Языки программирования → Обзор LLVM
LLVM (Low Level Virtual Machine) — это универсальная система анализа,
трансформации и оптимизации программ или, как её называют разработчики,
«compiler infrastucture».
LLVM — не просто очередной академический проект. Его история началась в 2000
году в Университете Иллинойса, а теперь LLVM используют такие гиганты индустрии
как Apple и Adobe. В частности, на LLVM основана подсистема OpenGL в MacOS X
10.5, а iPhone SDK использует GCC с бэкэндом на LLVM. Apple является одним из
основных спонсоров проекта, а вдохновитель LLVM — Крис Латтнер — теперь работает
в Apple.
В основе LLVM лежит промежуточное представление кода (intermediate
representation, IR), над которым можно производить трансформации во время
компиляции, компоновки (linking) и выполнения. Из этого представления
генерируется оптимизированный машинный код для целого ряда платформ, как
статически, так и динамически (JIT-компиляция). LLVM поддерживает генерацию кода
для x86, x86-64, ARM, PowerPC, SPARC, MIPS, IA-64, Alpha.
LLVM написана на C++ и портирована на большинство *nix-систем и Windows.
Система имеет модульную структуру и может расширяться дополнительными
алгоритмами трансформации (compiler passes) и кодогенераторами для новых
аппаратных платформ. Пользовательский фронтенд, как правило, линкуется с LLVM и
использует C++ API для генерации кода и его преобразований. Однако LLVM включает
в себя и standalone утилиты.
Для тех, кто не без оснований считает C++ не лучшим языком для написания
компиляторов, с недавних пор в LLVM включена обертка API для OCaml.
Чтобы понять, что можно сделать с помощью LLVM, и на каком уровне придётся
работать, давайте разберёмся,
трансформации и оптимизации программ или, как её называют разработчики,
«compiler infrastucture».
LLVM — не просто очередной академический проект. Его история началась в 2000
году в Университете Иллинойса, а теперь LLVM используют такие гиганты индустрии
как Apple и Adobe. В частности, на LLVM основана подсистема OpenGL в MacOS X
10.5, а iPhone SDK использует GCC с бэкэндом на LLVM. Apple является одним из
основных спонсоров проекта, а вдохновитель LLVM — Крис Латтнер — теперь работает
в Apple.
В основе LLVM лежит промежуточное представление кода (intermediate
representation, IR), над которым можно производить трансформации во время
компиляции, компоновки (linking) и выполнения. Из этого представления
генерируется оптимизированный машинный код для целого ряда платформ, как
статически, так и динамически (JIT-компиляция). LLVM поддерживает генерацию кода
для x86, x86-64, ARM, PowerPC, SPARC, MIPS, IA-64, Alpha.
LLVM написана на C++ и портирована на большинство *nix-систем и Windows.
Система имеет модульную структуру и может расширяться дополнительными
алгоритмами трансформации (compiler passes) и кодогенераторами для новых
аппаратных платформ. Пользовательский фронтенд, как правило, линкуется с LLVM и
использует C++ API для генерации кода и его преобразований. Однако LLVM включает
в себя и standalone утилиты.
Для тех, кто не без оснований считает C++ не лучшим языком для написания
компиляторов, с недавних пор в LLVM включена обертка API для OCaml.
Чтобы понять, что можно сделать с помощью LLVM, и на каком уровне придётся
работать, давайте разберёмся,
Блог им. vak → LLVM 2.0 вышел
в продолжение к хабротопику об LLVM: новый релиз LLVM 2.0 вышел 23 мая 2007г и содержит множество нововведений.
Будущее здесь → К концу месяца ожидается выход LLVM 2.0
Чего бы ради писать сюда о проекте, который сегодня едва ли разрывает будущее на куски своим неуёмным развитием? Дело в том, что наверняка в будущее можно въезжать также и неспешно, — но всерьёз и надолго.
Low Level Virtual Machine (LLVM) — это основа для разработчиков языков. Может back-end, может middleware — решайте сами.
Low Level Virtual Machine (LLVM) — это основа для разработчиков языков. Может back-end, может middleware — решайте сами.