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

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

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

  • Существенно увеличена производительность генератора кода. При использовании флагов оптимизации "-Os" и "-O2" по умолчанию включена поддержка автоматической векторизации циклов, ранее применяемой только при указании флага "-O3". Также включен по умолчанию представленным в прошлом выпуске новый SLP-векторизатор.
  • Сборка по умолчанию бэкэнда для использования в качестве целевой платформы GPU семейства R600 (HD2XXX - HD7XXX). Бэкэнд необходим для компилятора шейдеров LLVM, который в свою очередь требуется для открытой реализации стандарта OpenCL;
  • Внесены заметные изменения в бэкенд для процессоров PowerPC, положительно повлиявшие на качество кода и скорость сборки;
  • Расширены возможности бэкендов X86, SPARC, ARM32, Aarch64 и SystemZ;
  • LLVM 3.4 является последним выпуском, который может быть собран компилятором с поддержкой стандарта C++'98, для сборки следующих версий потребуется компилятор, совместимый с C++'11.

Основные новшества субпроектов LLVM 3.4:

  • Улучшения в Clang:
    • Обеспечена полная поддержка всех возможностей текущего чернового варианта будущего стандарта C++1y;
    • В Clang Static Analyzer существенно улучшена поддержка C++, сокращено число ложных срабатываний и расширено число выявляемых ошибок;
    • В состав включена новая утилита "clang-format", которую можно использовать для автоматического форматирования кода в текстовых редакторах или интегрированных средах разработки, на основе заданного набора правил стилевого оформления кода;
    • Добавлен экспериментальный альтернативный интерфейс командной строки, обеспечивающий совместимость на уровне опций с компилятором cl.exe из состава Visual Studio, который может применяться для упрощения миграции проектов на Clang без переработки сборочных сценариев;
    • При использовании флага "-O4" теперь не включается оптимизации на стадии компоновки (link-time optimization), для которой следует явно указать флаг "-flto", применяемый при любом уровне оптимизации.
  • Проект Mozilla начал развитие проекта DXR, в рамках которого подготовлен инструментарий для поиска и навигации по большим кодовым базам, таким как исходные тексты Firefox. Поддерживается полнотекстовый поиск, запросы с использованием регулярных выражений и структурированные запросы в форме "найти все вызовы такой-то функции".

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

  • KLEE - символьный анализатор и генератор тестовых наборов;
  • Runtime-библиотека compiler-rt;
  • llvm-mc - автогенератор ассемблера, дизассемблера и других, связанных с машинным кодом компонентов, на основе описаний параметров LLVM-совместимых платформ.
  • VMKit - виртуальная машина для Java и .NET;
  • Реализация функционального языка программирования Pure;
  • LDC - компилятор для языка D;
  • Roadsend PHP - оптимизатор, статический и JIT компилятор для языка PHP;
  • Виртуальные машины для Ruby: Rubinius и MacRuby;
  • 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.


Источник:
http://www.opennet.ru/opennews/art.shtml?num=38798

<= Назад
Комментарии
]]> ipv6 ready Kiev LUGLinux4MeНостальгияЛичный сайт skeletora ]]>