The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Новая версия набора компиляторов LLVM 2.8

07.10.2010 15:06

Представлен релиз проекта LLVM 2.8 (Low Level Virtual Machine) - GCC совместимого инструментария (компиляторы, оптимизаторы и генераторы кода), компилирующего программы в промежуточный байт-код RISC подобных виртуальных инструкций (низкоуровневая виртуальная машина с многоуровневой системой оптимизации). Сгенерированный платформонезависимый псевдокод может быть преобразован при помощи JIT-компилятора в машинные инструкции непосредственно в момент выполнения программы.

В новой версии отмечено значительное улучшение поддержки языка C++ в компиляторе Сlang, в частности завершено добавление всех необходимых возможностей и C++ компилятор теперь вполне пригоден к использованию. Дополнительно отмечается присоединение к LLVM (не включены в состав релиза 2.8) двух больших подпроектов: библиотеки libc++ и отладчика LLDB.

libc++ представляет собой реализацию стандартной библиотеки классов C++, распространяемую под BSD-подобной лицензией и нацеленную на высокоэффективную генерацию кода и на максимальное обеспечение совместимости с существующими и будущими стандартами (C++0X). Из особенностей библиотеки также можно отметить минимальное потребление памяти, высокую скорость выполнения функций, быструю компиляцию и совместимость на уровне ABI с libstdc++ из состава GCC для некоторых низкоуровневых возможностей, таких как объекты-исключения (exception objects), rtti и распределение памяти.

В рамках проекта LLDB развивается новая модульная инфраструктура отладки, использующая такие подсистемы LLVM как API для дизассемблирования, Clang AST (Abstract Syntax Tree), парсер выражений, генератор кода и JIT-компилятор. LLDB поддерживает отладку многопоточных программ на языках C, Objective-C и C++; отличается возможностью подключения плагинов и скриптов на языке Python; демонстрирует экстремально высокое быстродействие при отладке программ большого размера.

Ключевые новшества LLVM 2.8:

  • Реализация встроенного ассемблера (в Clang по умолчанию используется для выполнения inline-блоков), который поддерживающий формат объектных файлов MachO (также присутствует поддержка ELF и COFF, но она пока непригодна для использования);
  • Поддержка прямой записи объектных файлов (.o) из компилятора LLC (и clang);
  • Дизассемблер для архитектур ARM и Thumb;
  • В ассемблере для архитектуры X86 добавлена поддержка набора инструкций AES и AVX;
  • Расширяемый генератор кода для архитектуры ARM;
  • Улучшенная поддержка отладки оптимизированного кода;
  • Значительное увеличение производительности X87-операций с плавающей точкой;
  • Поддержка tailcall-оптимизации для процессоров ARM;
  • В комплект включена программа llvm-diff, аналог утилиты diff для сравнения ".ll"-файлов.

Из параллельно развивающихся проектов, основанных на LLVM, можно отметить:

  • llvm-gcc плагин DragonEgg, нацеленный на совместимость с GCC 4.5;
  • KLEE - символьный анализатор и генератор тестовых наборов;
  • Runtime-библиотека compiler-rt;
  • llvm-mc - автогенератор ассемблера, дизассемблера и других, связанных с машинным кодом компонентов, на основе описаний параметров LLVM-совместимых платформ.
  • VMKit - виртуальная машина для Java VM и .NET VM;
  • Реализация функционального языка программирования Pure;
  • LDC - компилятор для языка D;
  • Roadsend PHP - оптимизатор, статический и JIT компилятор для языка PHP;
  • Виртуальные машины для Ruby: Rubinius и MacRuby;
  • Unladen Swallow - реализация языка Python;
  • LLVM-Lua
  • FlashCCompiler - средство для компиляции кода на языке Си в вид пригодный для выполнения в виртуальной машине Adobe Flash.


  1. Главная ссылка к новости (http://lists.cs.uiuc.edu/piper...)
  2. OpenNews: Представлен LLDB - новый отладчик, развиваемый под эгидой проекта LLVM
  3. OpenNews: Новая версия набора компиляторов LLVM 2.7
  4. OpenNews: Проект LLVM представил новую стандартную библиотеку С++
  5. OpenNews: Создатель проекта LLVM удостоен премии ACM
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/28207-llvm
Ключевые слова: llvm, gcc, compile
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (20) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, К.О. (?), 15:29, 07/10/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Из параллельно развивающихся проектов, основанных на LLVM , можно отметить

    Ещё Glasgow Haskell Compiler имеет LLVM backend

     
     
  • 2.9, Sylvia (ok), 22:54, 07/10/2010 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Ещё Glasgow Haskell Compiler имеет LLVM backend

    на 11% по производительности отстающий от NGC и C бэкэндов того же GHC

     
     
  • 3.21, asl (?), 11:17, 09/10/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    А вот Девид тут http://blog.llvm.org/2010/05/glasgow-haskell-compiler-and-llvm.html пишет, что на 10% быстрее как минимум и на порядок меньше кода, чем NGC/C :)
     

  • 1.2, Толстый (ok), 15:47, 07/10/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Поздравляю всех с релизом!

    > Поддержка прямой записи объектных файлов (.o) из компилятора LLC (и clang);

    Пока только для MacOS к сожалению.

     
     
  • 2.5, Anon (?), 18:00, 07/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Не только. ELF writer написан и для FreeBSD и собранное с его помощью ядро даже работает.
     
     
  • 3.6, Толстый (ok), 18:04, 07/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    Это хорошо. И как по ощущениям, быстрее чем раньше работает?
     
     
  • 4.19, Anon (?), 01:08, 08/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    > Это хорошо. И как по ощущениям, быстрее чем раньше работает?

    С чего бы? Это ж ELF writer, a не оптимизатор.

     
  • 3.10, Sylvia (ok), 22:56, 07/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    новый writer ( проект Machine Code ) реализован для MacOSX
    http://blog.llvm.org/2010/04/intro-to-llvm-mc-project.html блог MC

     
     
  • 4.13, asl (?), 22:59, 07/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    С апреля прошло уже достаточно много времени :)
     
     
  • 5.16, Sylvia (ok), 23:03, 07/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    в апреле вышла 2.7
    в блоге писали о целях для релиза 2.8

    впрочем вот что вышло

    # The MachO file format support is now fully functional and works.
    # The MC disassembler now fully supports ARM and Thumb. ARM assembler support is still in early development though.
    # The X86 MC assembler now supports the X86 AES and AVX instruction set.
    # Work on ELF and COFF object files and ARM target support is well underway, but isn't useful yet in LLVM 2.8. Please contact the llvmdev mailing list if you're interested in this.

    т.е. поддержка разных платформ у них сколько-нибудь реализована
    хотя о поддержке чего-то кроме darwin не заявлено

    The MC subproject has made great leaps in LLVM 2.8. For example, support for directly writing .o files from LLC (and clang) now works reliably for darwin/x86[-64] (including inline assembly support) and the integrated assembler is turned on by default in Clang for these targets. This provides improved compile times among other things.

     

  • 1.4, DFX (ok), 17:59, 07/10/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    забыли упомянуть что Gallium использует LLVM для полноскоростной программной прорисовки в отличие от обычного software rasterizer. и вроде бы на нём хотели делать что-то с shader'ами, но тут я не в курсе.
     
     
  • 2.12, Sylvia (ok), 22:58, 07/10/2010 [^] [^^] [^^^] [ответить]  
  • –2 +/
    Gallium _опционально_ может использовать llvm

    включается ключиком --enable-gallium-llvm , чего естественно в дистрибутивах, и даже в ебилдах не делают пока

     
     
  • 3.18, Аноним (-), 01:03, 08/10/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Да что вы говорите? :)

    media-libs/mesa
    Installed versions:  9999[1](06:44:39 05.10.2010)(classic gallium llvm..............

     
  • 3.20, DFX (ok), 06:57, 08/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    и ? ну я вот использую в своих ебилдах. и для git и для 7.9...

    а чтобы считалось, что "проект основан на llvm" надо его безальтернативно впилить ? ну наверное так - а то ведь llvm не "в основе" получается. но семантика не важна ибо суть в том, что llvm там используется и используется весьма эффективно, и на него будут перекладывать всё больше и больше задач. так что полезно не забывать об этом, "_опционально_" оно или нет.

    > включается ключиком --enable-gallium-llvm

    благодарствую, кэп!

     

  • 1.7, fidaj (ok), 20:26, 07/10/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    LLDB говорите....
    а как там на счет вразумительной отладки многопоточных программ? ;)
     
     
  • 2.8, Sylvia (ok), 22:53, 07/10/2010 [^] [^^] [^^^] [ответить]  
  • –1 +/
    не обольщайтесь, lldb пока только для darwin/darwin64
    как и libc++ , как и Machine Code
     
     
  • 3.11, fidaj (ok), 22:58, 07/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    > не обольщайтесь, lldb пока только для darwin/darwin64
    > как и libc++ , как и Machine Code

    ну так а хоть в принципе?

     
     
  • 4.14, Sylvia (ok), 23:00, 07/10/2010 [^] [^^] [^^^] [ответить]  
  • +/
    > ну так а хоть в принципе?

    проект молодой, статус реализованных возможностей тут http://lldb.llvm.org/status.html


     
  • 3.15, asl (?), 23:01, 07/10/2010 [^] [^^] [^^^] [ответить]  
  • +1 +/
    > как и libc++ , как и Machine Code

    А мужики-то не знают (c)

    X86 backend использует MC для всех платформ сейчас (MachO, ELF, COFF), кроме этого MC уже используется в ARM и MSP430 backend'ах. Direct Object Code Emission более-менее работает на MachO, чуть хуже для ELF. COFF - WIP.

     

  • 1.17, Аноним (-), 01:01, 08/10/2010 [ответить] [﹢﹢﹢] [ · · · ]  
  • +1 +/
    для FreeBSD  в HEAD:

    SVN rev 213534 on 2010-10-07 20:31:07Z by dim
      
      Upgrade Clang and LLVM to the 2.8 release.  See here for release notes:
      http://llvm.org/releases/2.8/docs/ReleaseNotes.html
      
      Approved by:    rpaulo (mentor)


    http://freshbsd.org/2010/10/07/20/31/07

     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру