LINUX.ORG.RU

LLVM 2.6

 , , ,


0

0

Шесть месяцев усердной разработки принесли свежие плоды: релиз Low-Level Virtual Machine за номером 2.6.

  • Архитектуры
    • Серьёзно и основательно доработана кодогенерция x86-64
    • Поддержка архитектуры ARM V7 (включая Thumb2 и NEON)
    • Новые кодогенераторы для MSP430, SystemZ, и BlackFin
    • SSE 4.2
  • Новые виды оптимизации
  • Многопоточная компиляция и оптимизация кода
  • Оптимизация при линковке на ELF-архитектурах (плагин 'gold linker')
  • Clang
    • Компилятор для C и Objective-C перешёл в статус «production quality» на х86
    • По сравнению с GCC у Clang улучшены сообщения об ошибках и предупреждениях
    • Компиляция проходит в 3 раза быстрее, чем у GCC
  • Новые подпроекты:
    • compiler-rt: Compiler runtime library
    • KLEE: Symbolic Analysis & Test Case Generator
    • DragonEgg: «llvm-gcc» плагин для GCC 4.5
    • llvm-mc: фреймворк, ориентированный на операции с машкодом, в том числе ассемблер, дисассемблер и проч. Проект находится в ранней стадии.

Проект LLVM находит всё более широкое применение в самых различных областях. На данный момент:

  • Компания Apple использует LLVM для оптимизаций в OpenGL
  • Проекты Rubinius и MacRuby являются реализациями виртуальных машин языка Ruby
  • LLVM D компилятор
  • Unladen Swallow (Python)
  • Roadsend PHP compiler и многие другие

>>> Подробности

Ответ на: комментарий от Golovachev

>Интересно, что у KRoN73 вышло из тестов.

Пока ничего. Увидел на Форониксе ( http://www.phoronix.com/scan.php?page=article&item=apple_llvm_gcc&num=1 ) бенчмарки, понял, что с сентября вряд ли что-то изменилось кардинально, а приориетет такого тестирования отъехал на задний план. Сегодня целый вечер решаю для себя более актуальный вопрос, пытаясь выдумать метод простой конфигурации массового проксирования для nginx :)

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

>>> А как специфические команды транслируются в LLVM байткод? Например sse* всякие.

>Вопрос неверно поставлен. >Компилятор генерирует LLVM байткод, а LLVM потом из него уже SSE* может нагенерировать, если нужно.

Смотри выше. Я про вставки assm кода. Если есть куски inline assm использующие специфические фичи проца.

White_Mouse
()
Ответ на: комментарий от hobbit

>Кстати, меня заинтересовало, чем именно он Low-Level, в частности, чем он низкоуровневее той же JVM, например.

Если я не ошибаюсь, как таковой VM там и нет: байткод перед исполнением всё равно компилируется в натив (т.е. интерпретации байткода нет вообще, на имеющуюся для этого тулузень н смотреть - она лишь обёртка), как следствие - нет и управления средой выполнения.

Можно из самой программы компилировать асмовый (или свой - своим компилятором) код в байт-код/натив и подгружать его, но это всё опять-же в LL варианте, на хостов языке (c++) с враппером на с без малейшей готовой инфраструктуры.

Т.е. LLVM - LL- конструктор. Хотя над оптимизациями кода там неплохо поработали.

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

>Если есть куски inline assm использующие специфические фичи проца...

...то нафиг тебе LLVM? Код непереносим и неоптимизируем. Ты на туристическом автобусе собрался в ралли участвовать? Напиши нужную функциональность на нормальном С (на чём хочешь) и подключай библиотеки к LLVM-сборке - нет проблем.

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

>> Если есть куски inline assm использующие специфические фичи проца...

> ...то нафиг тебе LLVM?

Для остальной части программы // К.О.

> Напиши нужную функциональность на нормальном С

То есть в LLVM не нормальный Си?

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

>То есть в LLVM не нормальный Си?

В LLVM "нормальный" asm, а си (в виде llvm-gcc или clang) - фронтэнд к нему. Использование же прямых вставок "процессороного asm-а" убивают на корню все "прелести" llvm. Нет, такой подход тоже имеет право на жизнь, но мне такая жизнь не понятна =]

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

> мне такая жизнь не понятна =]

А ты попытайся представить себе LLVM в роли компилятора общего назначения. Который собирает, например, ядро ОС.

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

> Вдоль?

Не понял.

Я предлагал собрать gzip и bzip2 и сравнить скорость работы. Они же на чистом си.

Или это почему-то нельзя (не показательно)?

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

>А ты попытайся представить себе LLVM в роли компилятора общего назначения. Который собирает, например, ядро ОС.

только если теоретически... Практически "мир" на столько "побит gcc-змами", что до сих пор каждый новый проект, собранный llvm-gcc - праздник на форуме.

Как по мне, так лучше бы его толкали в сторону инфраструктуры vm и дальнейших оптимизаций кода. Как простая замена gcc мне он не интересен: не смотря на очень хорошие показатели оптимизации кода на "синтетических" тестах или отдельных программах, в массе "обычного" софта толку от него не много (если не хуже становится), а пилить существующий проект под llvm-gcc надо...

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

РРРР... достаёт, что бинарная сборка идёт совсем без окружения: без библиотек и "хидеров": фактически кроме голого asm-а и иже с ним ничего не дают... Приходится собирать. Хорошо хоть собственным gcc уже собирается без проблем - когда-то и этого не было :Р

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