LINUX.ORG.RU

LLVM 3.0

 , ,


1

4

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). В ближайшее время на сайте в списке закачек ожидается появление бинарных сборок и тарболла.

>>> Подробности (англ.)

★★★★★

Проверено: mono ()

Ответ на: комментарий от cvs-255

угу но потери в производительности не оправдывают затраты для написания компилятора D под оверстопиццот платформ правда ведь? ну и да лучше код скомпилированый неоптимально для некоторых архитектур чем невозможность скомпилировать этот код под архитектуру

Thero ★★★★★ ()
Ответ на: комментарий от Rzhepish

когда вы портируете компилятор что проще написать компиляторы для каждого из более 100 языков или написать компилятор для одного промежуточного языка?

что проще добавить оптимизации в 1 компилятор или добавить их в 100?

просто даже не знаю как можно лезть в технические детали не разобравшись с целями и задачами.

Thero ★★★★★ ()
Ответ на: комментарий от Rzhepish

хорошо за 4 страницы обсуждения которые я не читал могло произойти что угодно, но забудь когда-нибудь поймёшь.

Thero ★★★★★ ()
Ответ на: комментарий от Thero

что проще добавить оптимизации в 1 компилятор или добавить их в 100?

вопрос не столь прост, как может показаться на первый взгляд.

AVL2 ★★★★★ ()
Ответ на: комментарий от Thero

Отсыпь дури, а? Какие технические детали, чьи цели и задачи? Ты вообще о чем говоришь? Сдаётся мне, ты меня с кем-то попутал.

Rzhepish ()

% /usr/bin/clang -v
FreeBSD clang version 3.0 (branches/release_30 142614) 20111021
Target: x86_64-unknown-freebsd9.0
Thread model: posix

Большая часть ПО (~460 пакетов программ) собрана Clang.

iZEN ★★★★★ ()
Ответ на: комментарий от anonymous

Только я не пойму как это доказывает тезис «LLVM если и подходит для динамических языков, то только с недавних пор»?

Тебе написали, почему. Что не понятно?

если тебе есть что сказать - скажи, подсовывать как попугай чужой пост не стоит, тем более я по поводу него уже вполне определённым образом высказался

если что-то тебе непонятно, я готов лично для тебя сделать комментарий

shty ★★★★★ ()
Ответ на: комментарий от anonymous

да, мой компилятор прошёл тест, в отличие от поделок школьников-неосиляторов, которым всё подавай на блюдечке готовое

Где этот компилятор?

на работе

shty ★★★★★ ()
Ответ на: комментарий от namezys

Думаю, что нужный им функционал в LLVM мог быть добавлен куда меньше ценой, чем реализация кодогенератора на PyPy

дело даже не в цене, вот есть vmkit, чего-то там никто не кричал что «llvm не годен»

shty ★★★★★ ()

upd: December 1, 2011: LLVM 3.0 is now available for download! LLVM is publicly available under an open source License.

shty ★★★★★ ()
Ответ на: комментарий от vertexua

Конечно. Щасте избавления от детища Столлмана - gnu gcc.

AVL2 ★★★★★ ()
Ответ на: комментарий от I-Love-Microsoft

Как-то в руби всё проще. Там тоже конечно гемы имеют разную совместимость с разными рантаймами по понятным причинам, но гемы на чистом руби по понятным причинам совместимы.

Зато у каждого рантайма есть своя более-менее целевая ниша.

tensai_cirno ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.