The OpenNET Project / Index page

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

23.05.2012 11:16  Новая версия набора компиляторов LLVM 3.1

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

Основные новшества LLVM 3.1:

  • Представлен инструмент для автоматизированного выявления ошибок с распределением памяти AddressSanitizer, позволяющий определить факты обращения к освобождённым областям памяти, выхода за пределы границ выделенного буфера и некоторые другие типы ошибок при работе с памятью;
  • Значительное улучшение поддержки стандарта C++'11 в LLVM-фронтэнде Clang. В том числе добавлена поддержка лямбда-выражений, списков инициализации, атомарных операций, ключевого слова "constexpr", пользовательских литералов и т.п. Поддержка языков C, C++, Objective-C++ и Objective-C в настоящее время полностью стабилизирована для целевых плафторм x86 (32- и 64-bit) и ARM. В новой версии также добавлена расширенная поддержка литералов для Objective C и интегрирована библиотека tooling для упрощения разработки собственных инструментариев на базе Clang;
  • В генератор кода добавлена поддержка "связок инструкций" (instruction bundles), позволяющих смоделировать поддержку VLIW-групп через упаковку произвольного числа параллельных инструкций. В итоге, значительно улучшена поддержка генерации кода для целевых архитектур процессоров VLIW (например, применяется в некоторых GPU), в которых одна инструкция содержит несколько параллельно выполняющихся операций. Кроме того, в генератор кода добавлена поддержка алгоритма "Basic Block Placement", поддерживающий вероятностные методы размещения блоков кода;
  • Добавлена реализация интегрированного макро-ассемблера для архитектуры ARM, который ускорил время компиляции и дал возможность реализовать некоторые дополнительные возможности для целевых систем ARM, такие как Thumb1, Thumb2 и ARM режимы, а также поддержку специфичных расширений для VFP2, VFP3 и NEON;
  • Значительное улучшение работы MIPS-бэкенда, теперь полноценно поддерживающего архитектуру MIPS64;
  • Добавлен новый порт с поддержкой процессоров Qualcomm Hexagon VLIW;
  • В DragonEgg, плагине к набору компиляторов GCC, заменяющем оригинальные оптимизаторы и генераторы кода GCC на аналоги, созданные в рамках проекта LLVM, в дополнение к полной поддержке работы в виде плагина к GCC 4.5 и 4.6 без применения дополнительных патчей, добавлена базовая поддержка GCC 4.7. Также добавлена возможность сборки для архитектуры ARM;
  • Улучшена работа библиотек libc++ и compiler_rt, которые распространяются под двойной лицензией MIT и UIUC. Библиотека libc++ представляет собой реализацию стандартной библиотеки классов C++, распространяемую под BSD-подобной лицензией и нацеленную на высокоэффективную генерацию кода и на максимальное обеспечение совместимости с существующими и будущими стандартами. Библиотека обеспечивает минимальное потребление памяти, высокую скорость выполнения функций, быструю компиляцию и совместимость на уровне ABI с libstdc++ из состава GCC для некоторых низкоуровневых возможностей, таких как объекты-исключения (exception objects), rtti и распределение памяти. В настоящее время libc++ уже интегрирована в базовую систему FreeBSD и планируется к использованию по умолчанию в FreeBSD 10. Отмечается также портирование libc++ для Solaris и возможность полноценного использования на данной платформе в сочетании с libcxxrt и clang;
  • Значительное увеличение производительности проекта VMKit, виртуальной машины Java VM, использующей LLVM для статической и JIT-компиляции;
  • В число официально поддерживаемых проектов включён экспериментальный оптимизатор Polly, в настоящий момент поддерживающий несколько техник оптимизации циклов и позволяющий организовать автоматическое распараллеливание кода с задействованием OpenMP. Для использования polly в clang следует указать "-O3 -mllvm -polly";
  • Для целевых платформ X86-32 и X86-64 значительно расширена поддержка набора инструкций AVX 2 (Advanced Vector Extensions), устранены проблемы с ранее реализованной поддержкой AVX1, добавлена поддержка расширений FMA4 и XOP;
  • Добавлены официально поддерживаемые биндинги для языка Python, которые пока поддерживают только интерфейс для работы с объектными файлами и дизасемблер;
  • Добавлена утилита llvm-stress для проведения стресс-тестирования различных компонентов LLVM путем генерации случайных ll-файлов.

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

  • KLEE - символьный анализатор и генератор тестовых наборов;
  • Runtime-библиотека compiler-rt;
  • llvm-mc - автогенератор ассемблера, дизассемблера и других, связанных с машинным кодом компонентов, на основе описаний параметров LLVM-совместимых платформ.
  • VMKit - виртуальная машина для Java и .NET;
  • Реализация функционального языка программирования Pure;
  • LDC - компилятор для языка D;
  • Roadsend PHP - оптимизатор, статический и JIT компилятор для языка PHP;
  • Виртуальные машины для Ruby: Rubinius и MacRuby;
  • Unladen Swallow - реализация языка Python;
  • LLVM-Lua
  • FlashCCompiler - средство для компиляции кода на языке Си в вид пригодный для выполнения в виртуальной машине Adobe Flash;
  • LLDB - новая модульная инфраструктура отладки, использующая такие подсистемы LLVM как API для дизассемблирования, Clang AST (Abstract Syntax Tree), парсер выражений, генератор кода и JIT-компилятор. LLDB поддерживает отладку многопоточных программ на языках C, Objective-C и C++; отличается возможностью подключения плагинов и скриптов на языке Python; демонстрирует экстремально высокое быстродействие при отладке программ большого размера;
  • emscripten - компилятор биткода LLVM в JavaScript, позволяющий преобразовать для запуска в браузере приложения, изначально написанные на языке Си. Например, удалось запустить Python, Lua, Quake, Freetype;
  • sparse-llvm - бэкенд, нацеленный на создание Си-компилятора, способного собирать ядро Linux.
  • Portable OpenCL - открытая и независимая реализация стандарта OpenCL;
  • CUDA Compiler - позволяет сгенерировать GPU-инструкции из кода, написанного на языках Си, Си++ и Fortran;
  • Julia - открытый динамический язык программирования, использующий наработки проекта LLVM.


  1. Главная ссылка к новости (http://lists.cs.uiuc.edu/piper...)
  2. OpenNews: NVIDIA передала CUDA Compiler в руки сообщества LLVM
  3. OpenNews: Представлен проект по созданию среды кросс-компиляции и запуска приложений на базе LLVM/Clang
  4. OpenNews: Релиз набора компиляторов LLVM 3.0
  5. OpenNews: На базе Sparse создан LLVM-бэкенд, нацеленный на пересборку ядра Linux
  6. OpenNews: Увидел свет Emscripten 1.4, компилятор байткода LLVM в JavaScript-представление
Лицензия: CC-BY
Тип: Интересно / Программы
Ключевые слова: llvm, clang, gcc
При перепечатке указание ссылки на opennet.ru обязательно
Обсуждение Линейный вид | Ajax | Показать все | RSS
 
  • 1.7, pavlinux, 12:59, 23/05/2012 [ответить] [смотреть все]
  • –4 +/
    Polly вкусная няшка.
     
     
  • 2.60, кевин, 03:39, 25/05/2012 [^] [ответить] [смотреть все] [показать ветку]
  • +/
    хм понять бы как её в генте завести..
     
  • 1.8, Андрей, 13:30, 23/05/2012 [ответить] [смотреть все]
  • –1 +/
    Если бы LLDB был не только под Apple.
     
     
  • 2.21, an., 16:57, 23/05/2012 [^] [ответить] [смотреть все] [показать ветку]
  • +/
    Что Вы имеете в виду Насколько написано в документации, он должен работать под ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.24, Андрей, 17:25, 23/05/2012 [^] [ответить] [смотреть все]  
  • +/
    Вот другие обещают, но не делают, а LLDB, значит, может больше, чем на главной с... весь текст скрыт [показать]
     
     
  • 4.31, an., 18:27, 23/05/2012 [^] [ответить] [смотреть все]  
  • +/
    Да, на главной действительно нету Но есть вот это http lldb llvm org build h... весь текст скрыт [показать]
     
  • 1.9, Аноним, 13:42, 23/05/2012 [ответить] [смотреть все]  
  • +2 +/
    Параллельно развивающийся проект Unladen Swallow умер 2 года назад за ненадоб... весь текст скрыт [показать]
     
     
  • 2.26, Аноним, 17:59, 23/05/2012 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    В параллельной вселенной, разумеется Никогда не слышали про кота Шредингера и а... весь текст скрыт [показать] [показать ветку]
     
  • 1.11, x0r, 14:28, 23/05/2012 [ответить] [смотреть все]  
  • +/
    clang static checker классная штука, жаль только для C, а не C++
    Я им нашел ошибки в нескольких opensource проектах
     
  • 1.12, Trewsa, 15:42, 23/05/2012 [ответить] [смотреть все]  
  • +/
    Объясните, что такое LLVM? Это наподобие Java? Скомпилировал в байт-код и могу использовать на разных платформах с LLVM. Или  это наподобия виртуальной явы машины, а clang типа jcc. Вот для примера у меня есть какой либо код написанный с использованием C++(никакого гуи только консоль).  Каким образом компилировать? llvm или clang?
     
     
  • 2.14, Толстый, 16:02, 23/05/2012 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    Первое предложение c llvm org The LLVM Project is a collection of modular and ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.16, Trewsa, 16:08, 23/05/2012 [^] [ответить] [смотреть все]  
  • +/
    Т е LLVM это просто библиотеки И clang не обязательно использовать LLVM ... весь текст скрыт [показать]
     
     
  • 4.18, Толстый, 16:21, 23/05/2012 [^] [ответить] [смотреть все]  
  • +/
    Clang это компилятор построенный на технологиях LLVM Для тебя это будет такой ж... весь текст скрыт [показать]
     
     
  • 5.22, Trewsa, 17:18, 23/05/2012 [^] [ответить] [смотреть все]  
  • +/
    Т о кроссплатформеность LLVM это кроссплатформенность Clang И чтобы какое либо... весь текст скрыт [показать]
     
     
  • 6.29, dq0s4y71, 18:17, 23/05/2012 [^] [ответить] [смотреть все]  
  • +1 +/
    Чтобы какое либо приложение было кроссплатформенным, его нужно таким НАПИСАТЬ А... весь текст скрыт [показать]
     
     
  • 7.34, Аник, 19:52, 23/05/2012 [^] [ответить] [смотреть все]  
  • +/
    Ну так и в чем суть LLVM? Virtual machine не?
     
  • 6.61, кевин, 03:44, 25/05/2012 [^] [ответить] [смотреть все]  
  • +/
    тыц вся плюшность что кланг и тысячи своих компиляторов можно писать только для... весь текст скрыт [показать]
     
  • 5.28, Аноним, 18:10, 23/05/2012 [^] [ответить] [смотреть все]  
  • –6 +/
    А также - С кривым оптимизатором, выдающим код хуже укуренной обезьяны под град... весь текст скрыт [показать]
     
     
  • 6.32, an., 18:32, 23/05/2012 [^] [ответить] [смотреть все]  
  • +1 +/
    Есть подозрение, что Вы не полностью правы насчет его стабильности и того, кому ... весь текст скрыт [показать]
     
     
  • 7.39, an., 22:02, 23/05/2012 [^] [ответить] [смотреть все]  
  • +/
    Справедливости ради хочу отметить, что речь шла про версию 3 0 Что касается 3 1... весь текст скрыт [показать]
     
  • 7.43, Аноним, 03:00, 24/05/2012 [^] [ответить] [смотреть все]  
  • –4 +/
    А эти господа велосипедисты-концептуалы на проблемы своих пользователей по жизни... весь текст скрыт [показать]
     
     
  • 8.64, кевин, 03:59, 25/05/2012 [^] [ответить] [смотреть все]  
  • +/
    внимание вопрос товарищи знатоки где в новости о выходе нового кланга и ллвм сод... весь текст скрыт [показать]
     
     
  • 9.66, N901, 06:55, 25/05/2012 [^] [ответить] [смотреть все]  
  • +/
    кевин, жжешь! :)
     
  • 6.36, Толстый, 20:45, 23/05/2012 [^] [ответить] [смотреть все]  
  • +/
    Мы вроде как находимся на форуме посвященному OpenSource - добро пожаловать Как... весь текст скрыт [показать]
     
     
  • 7.38, Crazy Alex, 21:34, 23/05/2012 [^] [ответить] [смотреть все]  
  • +/
    Кхм. LDC вместо DMD? Но зачем...
     
     
  • 8.42, Толстый, 01:11, 24/05/2012 [^] [ответить] [смотреть все]  
  • +/
    Ну dmd мой основной компилятор, но и ldc пользоваться иногда приходится На лину... весь текст скрыт [показать]
     
     
  • 9.47, Аноним, 03:21, 24/05/2012 [^] [ответить] [смотреть все]  
  • +/
    > Ну dmd мой основной компилятор,

    Мсье знает толк...

     
  • 7.44, Аноним, 03:16, 24/05/2012 [^] [ответить] [смотреть все]  
  • –1 +/
    Глупо ломиться в запертую дверь если она стоит в чистом поле Можно просто взять... весь текст скрыт [показать]
     
     
  • 8.50, kshetragia, 05:54, 24/05/2012 [^] [ответить] [смотреть все]  
  • +2 +/
    Че сказать-то хотел Залогинься уже, User Ты можешь изменить ник, но стиль впо... весь текст скрыт [показать]
     
  • 8.52, _yurkis_, 10:09, 24/05/2012 [^] [ответить] [смотреть все]  
  • +2 +/
    Первый абзац вроде ничего. Но потом эталонный неадекват :(
     
  • 8.65, Аноним, 04:37, 25/05/2012 [^] [ответить] [смотреть все]  
  • +/
    не говори мне, чем пользоваться и не скажу куда тебе следует пойти не нравится ... весь текст скрыт [показать]
     
  • 6.62, кевин, 03:47, 25/05/2012 [^] [ответить] [смотреть все]  
  • +/
    gt оверквотинг удален весь мой генту перекомпилировался клангом за исключением... весь текст скрыт [показать]
     
  • 2.33, Имя, 19:30, 23/05/2012 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Эксперименты с переносимым байт кодом LLVM идут в NativeClient-е, без особого ус... весь текст скрыт [показать] [показать ветку]
     
  • 2.49, kshetragia, 05:51, 24/05/2012 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Это скорее и то и другое CLANG - это фронтенд компилятор Который разбирает ... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.51, kshetragia, 06:15, 24/05/2012 [^] [ответить] [смотреть все]  
  • +/
    Идея p-кода принадлежит Арсу Эмману Urs Ammann , студенту Никлауса Вирта В св... весь текст скрыт [показать]
     
     
  • 4.54, тоже Аноним, 12:58, 24/05/2012 [^] [ответить] [смотреть все]  
  • +1 +/
    Значит, хотя бы это уже не смогли запатентовать корпорации. И то славно...
     
     
  • 5.58, arisu, 00:59, 25/05/2012 [^] [ответить] [смотреть все]  
  • +/
    как будто наличие prior work мешает выдаче патента патентные бюро патенты не пр... весь текст скрыт [показать]
     
  • 1.13, Анонимко, 15:47, 23/05/2012 [ответить] [смотреть все]  
  • +/
    >clang static checker классная штука, жаль только для C, а не C++

    Ты про статический анализатор? Если да, то он есть и под C++

     
  • 1.15, Толстый, 16:05, 23/05/2012 [ответить] [смотреть все]  
  • +/
    Отличный проект. Благодаря LLVM появилась возможность экспериментировать с новыми языками программирования компилирующими в нативный код, не углубляясь в детали кодогенерации. До этого это было невозможно, не связываясь с ужасом под названием GCC.
     
     
  • 2.20, iZEN, 16:34, 23/05/2012 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    LLVM как раз-таки позволяет углубляться в детали кодогенерации в отличие от ужа... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.23, Толстый, 17:18, 23/05/2012 [^] [ответить] [смотреть все]  
  • +/
    Нет LLVM IR довольно-таки high-level штука Совсем необязательно знать даже асс... весь текст скрыт [показать]
     
     
  • 4.30, dq0s4y71, 18:20, 23/05/2012 [^] [ответить] [смотреть все]  
  • +4 +/
    И работать он будет как кодогенератор, сделанный человеком, который даже не знае... весь текст скрыт [показать]
     
     
  • 5.37, Толстый, 21:09, 23/05/2012 [^] [ответить] [смотреть все]  
  • +/
    Он работает как кодогенератор, который сделан людьми, которые знают ассемблер А... весь текст скрыт [показать]
     
     
  • 6.45, Аноним, 03:18, 24/05/2012 [^] [ответить] [смотреть все]  
  • +/
    А тебе что, слабо погуглить по наиболее типовым ошибкам и найти тонну мата самом... весь текст скрыт [показать]
     
     
  • 7.63, кевин, 03:53, 25/05/2012 [^] [ответить] [смотреть все]  
  • +/
    наиболее типовая ошибка в том что многие пробуя кланг пропускают предупреждения ... весь текст скрыт [показать]
     
  • 2.68, ffirefox, 18:08, 25/05/2012 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    До этого делали генератор С кода, который компилили через любой С-компилятор Уд... весь текст скрыт [показать] [показать ветку]
     
     ....нить скрыта, показать (7)

  • 1.19, iZEN, 16:31, 23/05/2012 [ответить] [смотреть все]  
  • +/
    LLVM/Clang 3.1 доступен в составе базовой системы FreeBSD 9-STABLE.
     
     
  • 2.25, Аноним, 17:27, 23/05/2012 [^] [ответить] [смотреть все] [показать ветку]  
  • +/
    Фряха поддерживает арм Если да, то странно смотреть на их спешки, сланг много к... весь текст скрыт [показать] [показать ветку]
     
     
  • 3.27, Аноним, 18:02, 23/05/2012 [^] [ответить] [смотреть все]  
  • +1 +/
    Можно реализовать большой проект быстро, дешево и качественно Но в любой момент... весь текст скрыт [показать]
     
  • 3.35, iZEN, 20:14, 23/05/2012 [^] [ответить] [смотреть все]  
  • –1 +/
    Давно уже Правда в качестве экспериментальной архитектуры, так как до конца не ... весь текст скрыт [показать]
     
     
  • 4.41, Vova, 00:17, 24/05/2012 [^] [ответить] [смотреть все]  
  • +1 +/
    На арме собрал?
     
  • 4.46, Аноним, 03:19, 24/05/2012 [^] [ответить] [смотреть все]  
  • +/
    И что за ARMовская машинка была А то как бы названия команд типа b и bl должны ... весь текст скрыт [показать]
     
     
  • 5.56, iZEN, 14:21, 24/05/2012 [^] [ответить] [смотреть все]  
  • +/
    faac faad2 собирал под amd64 Вопрос был о качестве компиляции декодера ... весь текст скрыт [показать]
     
     
  • 6.59, arisu, 01:24, 25/05/2012 [^] [ответить] [смотреть все]  
  • +/
    вопрос, наш недалёкий друг, был о качестве кодогенератора под ARM но ты у нас н... весь текст скрыт [показать]
     
  • 1.40, MegaEvgeniy, 23:03, 23/05/2012 [ответить] [смотреть все]  
  • –6 +/
    Походу это интересно bsd юзерам по большей степени Использую джава, ибо это су... весь текст скрыт [показать]
     
     
  • 2.48, arisu, 04:01, 24/05/2012 [^] [ответить] [смотреть все] [показать ветку]  
  • +4 +/
    > Использую джава

    ну и шёл бы себе мимо.

     
     
  • 3.53, MegaEvgeniy, 11:38, 24/05/2012 [^] [ответить] [смотреть все]  
  • –2 +/
    Очень продуктивный коммент ... весь текст скрыт [показать]
     
     
  • 4.57, arisu, 00:52, 25/05/2012 [^] [ответить] [смотреть все]  
  • +/
    примерно как твой мы спать не могли, мечтали увидеть восхваление жабы в теме пр... весь текст скрыт [показать]
     
     
  • 5.69, Аноним, 21:29, 25/05/2012 [^] [ответить] [смотреть все]  
  • +/
    А вот Вы как любите свою жабу? Давайте рассказывайте, не стесняйтесь.
     
  • 3.55, Аноним, 13:10, 24/05/2012 [^] [ответить] [смотреть все]  
  • +/
    и действительно
     
  • 2.67, N901, 07:03, 25/05/2012 [^] [ответить] [смотреть все] [показать ветку]  
  • +1 +/
    Джава в теме LLVM - означает пользуешься VMKit??
    а ну поделись успехами!
     

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


      Закладки на сайте
      Проследить за страницей
    Created 1996-2017 by Maxim Chirkov  
    ДобавитьРекламаВебмастеруГИД  
    Hosting by Ihor