LINUX.ORG.RU

Llvm


48

0

Всего сообщений: 47

Выпуск LLVM 16

Группа Разработка

Вышла новая версия LLVM. Проект LLVM включает в себя оптимизатор и кодогенератор с LLVM IR во многие процессорные архитектуры, который используется многими проектами для реализации своих языков программирования, а также:

  • компилятор C/C++/Objective-C (Clang);
  • компилятор Fortran (Flang);
  • cтандартную библиотеку для С++ (libc++);
  • отладчик LLDB;
  • линкер LLD;
  • среду исполнения (runtime) для OpenMP;
  • некоторые другие компоненты.

( читать дальше... )

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

 , ,

fsb4000
()

LLVM 11

Группа Open Source

Состоялся релиз набора GCC-совместимых инструментов разработки LLVM. В частности, в порядке эксперимента в состав вошёл Flang – фронтэнд для языка Фортран.

Из значимого:

  • Начата миграция сборочной системы в сторону использования Python 3. 2-я версия языка, тем не менее, всё ещё поддерживается в качестве «запасного» (fallback) варианта.
  • Поддержка восстановления AST, что упрощает поиск ошибок в коде, в том числе и дополнительными утилитами. Пример
  • Новые группы предупреждений: -Wpointer-to-int-cast, -Wuninitialized-const-reference и -Wimplicit-const-int-float-conversion. Последняя включена по умолчанию.
  • Добавлен набор расширенных целочисленных типов _ExtInt(N), позволяющих создавать типы не кратные степени двойки. Да, теперь можно делать «инты» кратными любому числу!
  • Целая куча улучшений в Clang, в частности, новые «фичи» для многих платформ, в том числе x86, ARM и RISC-V, улучшенная производительность, новые функции для работы с OpenCL (и ROCm) и OpenMP.

Полный список изменений, как всегда, в Release Notes:

https://releases.llvm.org/11.0.0/docs/ReleaseNotes.html

https://releases.llvm.org/11.0.0/tools/clang/docs/ReleaseNotes.html

https://releases.llvm.org/11.0.0/tools/clang/tools/extra/docs/ReleaseNotes.html

https://releases.llvm.org/11.0.0/tools/flang/docs/ReleaseNotes.html

https://releases.llvm.org/11.0.0/tools/lld/docs/ReleaseNotes.html

https://releases.llvm.org/11.0.0/tools/polly/docs/ReleaseNotes.html

https://releases.llvm.org/11.0.0/projects/libcxx/docs/ReleaseNotes.html

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

 ,

Korchevatel
()

Вышел Crystal 0.34.0

Группа Разработка

Вышла новая версия Crystal, компилируемого языка программирования с синтаксисом Ruby, главные особенности которого — рантайм с «вмонтированным» event loop’ом, в котором все операции ввода-вывода асинхронны, поддержка многопоточности (пока включается флагом при компиляции) и исключительно простая и удобная работа с библиотеками на Си.

Начиная с версии 0.34.0, язык официально начинает твёрдой поступью двигаться в сторону первого настоящего релиза (т.е. версии 1.0).

В новой версии Crystal можно отметить следующие изменения и улучшения в порядке их важности:

  • В API добавлена новая библиотека журналирования Log, которая, в отличие от старой, умеет направлять сообщения в разные бекенды и по-разному эти сообщения фильтровать в зависимости от «источника».

  • Рудименты из мира разработки на Си, Errno и WinError, использовавшиеся для примитивов ввода-вывода, уходят в прошлое благодаря иерархии исключений IO::Error (впрочем, использовать Errno никто пока не запрещает).

  • Убрана автоматическая подстановка else nil из оператора case/when/else. Это сделано для того, чтобы исключить случайный пропуск разработчиком одной из веток when при матчинге по детерминированным случаям наподобие enum’ов и прохода по типам из Union’а. Т.е., проще говоря, вот такой код больше работать не будет без указания ещё одного when (when Char) или задания else-ветки:

a = 1 || 'x' || "foo"
case a
when Int32
  # ...
when String
  # ...
end
  • Опция компилятора disable_overflow больше недоступна. Для операций с переполнением используйте методы &+, &-, &*.

  • Array#fill теперь летает быстрее пули, благодаря замене туповатого цикла на один простой memset;

  • Менеджер шардов (пакетов), называющихся, как это ни парадоксально, shards, теперь использует более быстрый и эффективный алгоритм удовлетворения зависимостей Molinillo, подсмотренный в CocoaPods (Swift) и Builder (Ruby).

  • Добавлена поддержка LLVM 10, что по идее даст нам некий рост производительности, стабильности, etc.

… и множество других, на мой субъективный взгляд, менее существенных улучшений.

Хотелось бы отметить, что Crystal — это построенный на LLVM язык, позволяющий писать приложения порой быстрее, проще и лаконичнее, чем на его интерпретируемых «собратьях», и при этом получать на выходе довольно шустрый бинарник. На фоне Golang выделяется абсолютно полноценным ООП, поддержкой дженериков и очень простым и понятным синтаксисом. По своему назначению во многом аналогичен Nim, но при этом явным образом ориентирован на практическое применение «здесь и сейчас», благодаря чему имеет в своём API-арсенале множество нормально документированных удобных и качественных инструментов, поддерживаемых разработчиками языка и потому весьма стабильных.

>>> Анонс в блоге Crystal

 , ,

DRVTiny
()

LLVM 10.0

Группа Разработка

LLVM – платформа для разработки компиляторов и тулчейнов под лицензией Apache 2.0 с исключениями.

Некоторые изменения в clang:

  • Теперь по умолчанию компиляция не запускается в новом процессе как раньше.

  • Поддерживаются концепты C++20.

  • Арифметика указателей в C и C++ разрешается только в пределах массивов, в соответствии со стандартами. Добавлены соответствующие проверки в Undefined Behavior Sanitizer.

  • Улучшена поддержка OpenCL и OpemMP 5.0.

  • Поведение в ряде случаев приближено к поведению GCC.

Некоторые общие изменения в LLVM:

  • Новые intrinsics для генерации оптимизированных векторных инструкций.

  • Значительно расширены возможности межпроцедурной оптимизации в экспериментальном фреймворке Attractor.

  • Множество улучшений в поддержке различных архитектур (AArch64, ARM, MIPS, PowerPC, SystemZ, X86, WebAssembly, RISC-V).

А также различные улучшения в libclang, clangd, clang-format, clang-tidy, Static Analyzer, LLDB.

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

 , , ,

anonymous
()

Релиз набора компиляторов LLVM 9.0

Группа Open Source

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

Из новых возможностей LLVM 9.0 отмечается обеспечение готовности целевой платформы RISC-V, реализация C++ для OpenCL, возможность разделить программу на динамически подгружаемые части в LLD и поддержка конструкции «asm goto», используемой в коде ядра Linux. В libc++ стал поддерживаться WASI (WebAssembly System Interface), а в LLD появилась возможность динамического связывания WebAssembly.

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

 , ,

Marketersandmobile
()

LLVM Foundation одобрил включение компилятора F18 в проект LLVM

Группа Разработка

На прошедшей встрече разработчиков EuroLLVM’19 (April 8 - 9 in Brussels / Belgium), после очередного обсуждения, совет директоров LLVM Foundation одобрил включение компилятора F18 (Fortran) и его среду выполнения в проект LLVM.

( читать дальше... )

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

 , ,

grem
()

Открыт исходный код компилятора C++ Zapcc

Группа Разработка

Zapcc — компилятор языка C++, основанный на наработках LLVM/Clang, данный компилятор отличается высокой скоростью компиляции из-за применения активного кеширования в различных этапах сборки программы. Данный компилятор может выступать в качестве замены gcc и clang, также он поддерживает интеграцию с любыми системами сборок. Исходный код был открыт под лицензией LLVM и располагается на GitHub.

Данный компилятор заметно ускоряет компиляцию C++, но для C это не настолько заметно, к примеру сборка Boost.Math производится в 10 раз быстрее чем у clang, сборка Webkit происходит в 2-4 раза быстрее, сборка Clang при помощи Zapcc выполняется в два раза быстрее, чем самим Clang.

Высокая скорость компиляции достигается применением zapccs, непосредственно выполняющего компиляцию и поддерживающего в оперативной памяти кэш компиляции, в котором между разными запусками сохраняется информация о всех этапах сборки.

Сборка Boost.Math

Сборка WebKit

Официальный сайт проекта

Репозиторий на GitHub

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

 , , ,

playX
()

Релиз набора компиляторов LLVM 5.0

Группа Разработка

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

Напомним, что в соответствии с новой нумерацией версий осуществлён уход от разделения значительных и функциональных выпусков. В каждом функциональном обновлении теперь меняется первая цифра (например, весной следующего года состоится релиз LLVM 6.0.0). Для обеспечения совместимости с существующими системами разбора номеров версий LLVM корректирующие обновления, как и раньше приводят к увеличению третьей цифры (5.0.1, 5.0.2, 5.0.3).

Из новых возможностей LLVM 5.0 отмечается полная реализация стандарта C++17, поддержка сопрограмм в C++, реализация GNU-расширения для неявного скалярного преобразования в вектор, новые оптимизации и средства диагностики ошибок.

Новшества в Clang:

  • Поддержка расширения для использования сопрограмм в коде на C++ (пример кода). Для включения следует использовать опции "-fcoroutines-ts -stdlib=libc++";
  • Обеспечена полная поддержка стандарта C++17. Для активации режима C++17 следует использовать флаг "-std=c++17" ("-std=c++1z" оставлен для обеспечения совместимости);
  • Новые возможности для диагностики:
    • "-Wcast-qual" для проверки корректности приведения типов в Си-стиле для C++;
    • "-Wunused-lambda-capture" для выявления переменных, захваченных лямбда-выражением, но не используемых в теле лямбда-выражения;
    • "-Wstrict-prototypes" для выявления не-прототипных функций, определений блоков и типов в Си и Objective-C;
    • "-Wunguarded-availability" для информирования об использовании новых API, которые были представлены в системе, версия которой новее версии системы, заданной в качестве целевой.
      • Также добавлен сокращённый вариант "-Wunguarded-availability-new", который охватывает проверку версий API, выпущенных после macOS 10.13, iOS 11, tvOS 11 и watchOS 4;
    • "-Wdocumentation" - позволяет использовать в комментариях директивы \param и \returns для задания типа указателя для блока или функции;
    Добавлен новый флаг компилятора "--autocomplete" для вывода списка флагов и их аргументов для применения в системах автодополнения ввода; Объявлены устаревшими и игнорируются флаги "-fslp-vectorize-aggressive" (заменён нормальным векторизатором SLP) и "-fno-slp-vectorize-aggressive" (данное поведение теперь всегда используется по умолчанию);
  • Добавлена новая pragma attribute для применения атрибута к нескольким декларациям;
  • Для языков Си++ и Си реализовано GNU-расширение для неявного скалярного преобразования в вектор. Пример преобразования скалярного значения в вектор (ко всем элементам вектора «a» будет прибавлено 5):
       typedef unsigned v4i32 __attribute__((vector_size(16)));
       v4i32 foo(v4i32 a) {
          return a + 5;
       }
    
  • Clang 5 станет последним выпуском, в котором по умолчанию используется режим "-std=gnu++98" при использовании совместимого с GCC драйвера clang++. Начиная со следующего выпуска будет применяться режим "-std=gnu++14" для совместимости с поведением новых выпусков GCC. Пользователям рекомендуется добавить в файлы сборки опции для явного определения используемой версии стандарта;
  • Устранена порция ошибок в реализации OpenCL, расширен тестовый набор для OpenCL, расширена диагностика, в руководство добавлена документация по OpenCL. Обеспечена поддержка расширения cl_khr_subgroups и атрибута intel_reqd_sub_group_size. В CIndex добавлены типы OpenCL;
  • В clang-format добавлена опция BreakBeforeInheritanceComma для подстановки разрывов после ":" и "," при определении класса.
  • Опция включена по умолчанию при выборе стиля оформления кода Mozilla. Обеспечено выравнивание комментариев. Обеспечена автоматическая подстановка комменария с именем пространства имён в конце его определения;
       class MyClass
           : public X
           , public Y {
       };
    
       /* line 1
        * line 2
        */
    
       namespace A {
          int i;
          int j;
       } // namespace A
    
  • В Libclang обеспечена поддержка автодополнения кода для следующих конструкций C++: static_assert, alignas, constexpr, final, noexcept, override и thread_local. Добавлено автодополнения для членов зависимых классов;
  • В linter clang-tidy добавлена большая порция новых проверок, реализованы новые модули bugpron и hicpp;
  • В статическом анализаторе добавлена поддержка автоматического доказателя теорем Z3, созданного в Microsoft Research для верификации кода своих продуктов. По сравнению с предлагаемым по умолчанию доказателем теорем Z3 работает примерно в 15 раз медленнее, но позволяет обрабатывать более сложные запросы. Для включения Z3 требуется сборка с опцией «CLANG_ANALYZER_BUILD_Z3=ON» и указание флагов "-Xanalyzer -analyzer-constraints=z3";
  • Расширены возможности компонента UBSan (Undefined Behavior Sanitizer) с реализацией детектора неопределенного поведения, выявляющего во время выполнения программы ситуации, когда поведение программы становится неопределенным:
  • Добавлены и включены по умолчанию новые средства для проверки переполнения указателей (-fsanitize=pointer-overflow).
  • Реализованы проверки для определения нарушения аннотаций о значениях NULL (-fsanitize=nullability) в аргументах функций, операциях присвоения и значениях return.
  • Обеспечено определение некорректной загрузки из битовых полей (bitfields) и булевых наборов ObjC.
  • В биндингах для языка Python обеспечена поддержка обеих веток — Python 2 и Python 3.

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

  • В компоновщике LLD решены многие проблемы с совместимостью, реализован более читаемый формат сообщений об ошибках, добавлена опция "-Map" для вывода схемы с сопоставлением входных файлов с результирующим файлом, значительно ускорена работа опции "--gdb-index ", добавлена поддержка нестандартных перестановок R_X86_64_8 и R_X86_64_16, по умолчанию обеспечено заполнение добавочных блоков в текстовых сегментах инструкцией INT3 вместо нулевых байтов. Добавлены новые опции: -compress-debug-sections, -emit-relocs, -error-unresolved-symbols, -exclude-libs, -filter, -no-dynamic-linker, -no-export-dynamic, -no-fatal-warnings, -print-map, -warn-unresolved-symbols, -z nocopyreloc, -z notext, -z rodynamic;
  • В оптимизаторе циклов Polly, поддерживающем несколько техник оптимизации циклов и позволяющем организовать автоматическое распараллеливание кода с задействованием OpenMP, обеспечена поддержка компиляции всех компонентов платформы Android и пакета FFMPEG;
  • Представлена новая библиотека BinaryFormat, в которую перемещены определения структуры file_magic и функций identify_magic, а также структур и определений для форматов DWARF, ELF, COFF, WASM и MachO;
  • Утилита llvm-pdbdump переименована llvm-pdbutil, так как она уже давно переросла из программы для дампа содержимого PDB в полноценный инструмент диагностики и манипуляции содержимым PDB;
  • Удалена стадия векторизации BBVectorize, на смену которой пришёл векторизатор SLP;
  • Добавлена утилита opt-viewer.py для визуализации сведений о выполненных оптимизациях в формате HTML на основании YAML-отчёта, генерируемого опцией "-fsave-optimization-record";
  • Добавлен новый CMake-макрос LLVM_REVERSE_ITERATION;
  • Добавлена утилита llvm-dlltool для создания коротких библиотек импорта из файлов с определениями в стиле GNU. Поддерживаются форматы импорта PE COFF SPEC Import Library и PE COFF Auxiliary Weak Externals;
  • Для архитектуры x86 добавлена поддержка CPU Intel Goldmont, реализован планировщик для CPU AMD Ryzen (znver1), обеспечено более агрессивное развёртывание (inlining) вызовов memcmp.
  • Добавлена поддержка инструкций AMD Lightweight Profiling (LWP), avx512vpopcntdq и инструкций AVX512 для ротации векторов.
  • Добавлена возможность трассировки процессов и core-файлов NetBSD в одном потоке LLDB;
  • В бэкенд AMDGPU добавлена поддержка архитектуры Radeon GFX9, используемой в GPU Vega;
  • Внесены многочисленные улучшения в бэкенды для архитектур AArch64, ARM, AVR, MIPS и PowerPC, в том числе добавлена поддержка инструкций ARMv 8.1, 8.2 и 8.3, большой порции расширений POWER ISA 3.0, MIPS MT ASE и оптимизаций размера для microMIPS.

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

 , , , компилять

valman___
()

LLVM 4.0.0

Группа Open Source

13 марта состоялся релиз LLVM 4.0.0. LLVM — это набор компонентов и технологий для создания трансляторов языков программирования.

Основные новые возможности новой версии:

  • экспериментальная поддержка сопрограмм (Coroutines in LLVM);
  • поддержка (пока экспериментальная) AVR включена в официальную версию и дальнейшая ее разработка будет происходить в основной ветви исходного кода LLVM;
  • соглашения о вызовах __vectorcall (разработано Microsoft) и __regcall (разработано Intel).

Также с 4.0.0 проект LLVM присоединился к гонке версий: новая схема номеров версий предусматривает увеличение мажорной версии с каждым новым релизом (т. е. следующий мажорный релиз будет 5.0.0); обновления к 4.0.0 будут нумероваться 4.0.x.

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

 ,

tailgunner
()

Вышел LLVM/Clang 3.9

Группа Open Source

Что нового в LLVM:

  • разработчики отказались от поддержки autoconf в пользу CMake;
  • добавлена совместимость с ABI для GCC версии 5 и выше;
  • добавлен анализатор MemorySSA, который работает быстрее и точнее, чем MemoryDependenceAnalysis.
  • добавлена поддержка ThinLTO через ключ -flto=thin — по сравнению с обычным LTO кодогенерация намного быстрее, а итоговый код производительнее;
  • теперь возможно использование ключа -march=skylake-avx512, активирующего поддержку соответствующих процессоров Intel.
  • теперь присутствует полноценная поддержка ARM-архитектур Qualcomm's Kryo и Broadcom's Vulcan, начальная поддержка Cortex-R8 и ARMv8.2-A.
  • для бэкенда AMDGPU реализованы шейдеры OpenGL, буферы, атомарные счётчики, шейдерные расширения.

Что нового в Clang:

  • все возможности OpenCL 2.0 полностью реализованы;
  • полностью реализован ОpenMP 4.5 для CPU, ведётся работа над GPU-частью;
  • начато внедрение возможностей стандарта C++1z, которые активируются ключом -std=c++1z;
  • есть многочисленные изменения для ARM, MIPS и PowerPC.

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

 ,

Deleted
()

Вышел Clasp 0.4

Группа Open Source

20 ноября вышел в свет Clasp 0.4 — новый релиз, включающий в себя совершенно новый компилятор, способный генерировать до 200 раз более быстрый код, чем его предшественник, так же улучшено взаимодействие с C++ и теперь реализация полнее соответствует стандарту ANSI Common Lisp.

Clasp — новая реализация Common Lisp с упором на легкое взаимодействие с библиотеками C++, используя LLVM для компиляции в нативный код, с целью использования большого количества существующих библиотек и программ. Встраивание их в среду Common Lisp'а позволяет воспользоваться быстрым прототипированием, инкрементальной разработкой и другими возможностями, делающими Common Lisp столь мощным языком.

Основные изменения:

  • Совершенно новый, оптимизирующий/встраивающий (inlining) компилятор — cclasp! (небольшое сравнение с C++ / SBCL / Python)
  • Значения типов fixnum, character и single-float теперь представлены напрямую.
  • Указатели на объекты и cons-ячейки теперь тегируются для скорости.
  • Библиотека Clbind позволяет программистам выставлять наружу внешние C++-библиотеки.
  • Множество исправлений ошибок и улучшений.

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

 , clasp, , ,

loz
()

OpenSWR, программный растеризатор от Intel

Группа Hardware and Drivers

OpenSWR — программная реализация OpenGL, позволяющая задействовать OpenGL на системах без GPU. По заявлению Intel, OpenSWR обеспечивает заметно более высокую производительность, чем уже имеющийся в составе Mesa растеризатор LLVMpipe. К примеру, при расчёте сцены из 2,9 миллионов полигонов OpenSWR показывает 29-кратный рост производительности, и 51-кратный на сцене с 106,2 млн. полигонов.

OpenSRW поддерживает OpenGL 3.3. Так же, как и в LLVMpipe, используются наработки проекта LLVM, ускорение же достигается при помощи распараллеливания вычислений, JIT-компиляции шейдеров, и использовании наборов инструкций SSE, AVX и AVX2.

OpenSWR предназначена для работы с крупными геометрическими моделями в кластерах, не оснащённых GPU. В основном упор сделан на визуализацию в научных исследованиях, с простыми шейдерами и множеством вершин, что довольно сильно отличается от типового использования GPU в играх.

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

 , , ,

Kaschenko
()

LLVM 3.7.0

Группа Open Source

1 сентября состоялся очередной и долгожданный релиз инструментария LLVM.

С момента предыдущего релиза в феврале 2015 произошли следующие значительные изменения:

  • Реализована полная поддержка OpenMP 3.1 и ограниченная поддержка OpenMP 4.0.
  • Поддержка компиляции скриптов в байткод BPF для дальнейшего исполнения в виртуальной машине ядра Linux eBPF. Для написания скриптов на языке C представлен фреймворк BCC.
  • Новый C++ ORC JIT API для поддержки технологии On-Request compilation, идущий на смену MCJIT. ORC JIT более пригоден для тестирования и дальнейшего расширения возможностей, а так же обладает рядом функциональных преимуществ.
  • Множество значительных улучшений в бэкэнде AMDGPU/R600. Для RadeonSI реализована поддержка OpenGL 4.1 в связке с Mesa 11.0.
  • Механизмы SafeStack и CFI позволяют противодействовать ряду атак на исполняемые приложения.
  • Значительные улучшения в поддержке архитектур MIPS и POWER8.
  • Поддержка оптимизаций на основе профиля выполнения (PGO). Синтаксис флагов совместим с GCC (-fprofile-generate и т.д.)

Замеры производительности LLVM 3.7 в сравнении с GCC доступны на Phoronix.
Ознакомиться со статистикой коммитов можно на github.

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

 ,

shahid
()

Патчем к LLVM реализовано ускорение свободного драйвера RadeonSI в 1,5-2 раза

Группа Hardware and Drivers

Для LLVM представлен коммит объёмом примерно в 2 тысячи строк, после применения которого производительность графической подсистемы, известной под обобщённым названием RadeonSI, увеличивается на десятки процентов. На самом деле после применения этого патча во всех тестах производительность открытого графического стека обходит проприетарный драйвер Catalyst.

Так же стоит отметить что в Mesa 11 (релиз которой ожидается в течении недели-двух) для RaseonSI обеспечена полная поддержка OpenGL 4.0 и 4.1 (ранее поддержка ограничивалась версией 3.3).

Измерение производительности

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

 , ,

haku
()

OpenMandriva переходит на LLVM/Clang

Группа Linux General

OpenMandriva Lx 2015 станет первым дистрибутивом Linux, перешедшим на LLVM/Clang в качестве базового компилятора. В качестве его преимуществ перед GCC были названы более быстрое развитие, более широкие возможности проверки кода и меньшие временные затраты на сборку пакетов. GCC будет оставлен дополнительным компилятором.

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

 , , ,

pedobear
()

Apple охладевает к разработке LLVM

Группа Open Source

Судя по всему, корпорация Apple сокращает своё участие в разработке LLVM — низкоуровневой виртуальной машины, работающей на многих архитектурах, в байткод которой могут компилироваться многие популярные языки при помощи соответствующих фронтендов.

Согласно утекшей внутренней информации, Apple настоятельно советует своим разработчикам сосредоточить усилия над разработкой своего нового языка Swift. Ранее в этом году LLVM уже была выделена в отдельную некоммерческую организацию, а контроль над выпуском новых версий ослаб.

Сотрудник Apple — Билл Вендлинг, занимающий пост менеджера по выпуску релизов уже собирается сложить с себя полномочия. В качестве своего преемника Билл назвал Тома Стелларда (AMD), либо Ганса Веннборга (Google).

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

 ,

anonymous
()

LLVM 3.4

Группа Open Source

Спустя 6 месяцев разработки было объявлено об очередном релизе LLVM. Этот релиз включает в себя большое количество изменений. Основные изменения:

  • clang поддерживает все возможности текущего рабочего драфта стандарта C++, временно называемого C++1y;
  • значительно улучшена поддержка С++ статическим анализатором;
  • clang включает новые возможности:
    • инструмент, называемый «clang-format» который может быть использован IDE или текстовым редактором для автоформатирования вашего кода в соответствии со встроенными стилями;
    • новый драйвер разработанный для совместимости с Visual Studio на Windows (экспериментальная поддержка).
  • значительный прирост производительности в кодогенераторе;
  • автоматическая векторизация циклов теперь включается при -Os и -O2 в дополнение к -O3 (для каждого уровня включаются, соответственным образом настроенные, эвристики);
  • автоматическая векторизация SLP («straight-line code») теперь тоже включается по умолчанию;
  • платформа R600 поддерживается по умолчанию (вместо экспериментальной поддержки);
  • несколько больших улучшений качества кода и времени генерации в кодогенераторе для PowerPC;
  • clang -O4 больше не включает link-time оптимизацию по умолчанию. LTO доступно с флагом -flto и может быть включено при любом уровне оптимизации. Старое поведение -O4 можно получить с помощью «clang -O3 -flto»;
  • llvm 3.4 будет последним релизом который будет собираться компилятором C++'98. Следующие релизы будут требовать встроенную поддержку С++'11 от компилятора.

LLVM 3.4 - это результат работы невероятного числа людей работавших вместе последние 6 месяцев, но релиз был бы невозможен без нашей команды добровольцев. Благодарности Bill Wendling за его работу по выпуску релиза, а также тестерам: Arnaud A. de Grandmaison, Ben Pope, Dimitry Andric, Duncan Sands, Erik Verbruggen, Hans Wennborg, Nikola Smiljanic, Paweł Worach, Rafael Espíndola, Renato Golin, Sebastian Dreßler, Sylvestre Ledru, and Tom Stellard.

Release Notes

Скачать

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

 ,

encyrtid
()

FreeBSD 10 выйдет без GCC по умолчанию

Группа BSD

Начиная с прошлой недели GNU Compiler Collection (GCC) больше не собирается по умолчанию как часть базовой системы FreeBSD 10. Известно, что на протяжении нескольких месяцев разработчики FreeBSD, а также пользователи BSD-семейства, добивались перехода на LLVM/Clang и ограничения роли GCC.

Функциональные возможности Clang в качестве компилятора C/C++ достигли уровня GCC, а распространение под лицензией BSD делает его более привлекательным для разработчиков системы. Кроме того, показатели эффективности LLVM продолжают расти: это и более быстрая компиляция, и меньший расход памяти.

GCC останется лишь на тех архитектурах, где неприменим Clang. Желающим продолжить использование GNU Compiler Collection на своей системе необходимо будет указать опции WITH_GCC и WITH_GNUCXX в файле src.conf

>>> Новость на Phoronix

 , , , ,

Bagrov
()

В Clang появилась поддержка спецификации OpenMP

Группа Open Source

Инженеры корпорации Intel сообщили о завершении работы по полной реализации поддержки OpenMP 3.1 в компиляторе С-подобных языков Clang. На текущий момент реализация успешно проходит все тесты совместимости, исходники лежат на github отдельной веткой, и уже начат процесс объединения изменений с основной веткой Clang.

OpenMP является открытым стандартом по распараллеливанию программ на C-подобных языках и языке программирования Fortran. Наличие поддержки OpenMP в компиляторе позволяет с помощью pragma-директив распараллеливать выполнение ресурсоемких вычислений в таких программах как ImageMagic, GraphicsMagic и многих других. Следует также отметить, что в июле 2013 года вышла новая версия спецификации OpenMP 4.0.

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

 , , ,

shahid
()

Релиз LLVM 3.3

Группа Open Source

Вышел новый релиз LLVM.

В числе изменений:

  • CellSPU удалён;
  • Документация к LLVM и Clang мигрировала на Sphinx;
  • Улучшена производительность под X86 и ARM;
  • Синтаксис TableGen приведён к более простому виду;
  • MCJIT сейчас поддерживает обработку исключений;
  • Опции командной строки сейчас сгруппированы по категориям, для просмотра смотрите -help;
  • Поддержка архитектуры AArch64;
  • Добавлена поддержка парсера ассемблера PowerPC;
  • DragonEgg — плагин для GCC, который замещает оптимизатор и генератор кода GCC на соответствующие модули LLVM.

Изменения в LLDB — отладчике для LLVM, используемом для скриптов и отдельных приложений:

  • Поддержка watchpoints;
  • Интеграция с VIM;
  • Улучшена поддержка регистров;
  • Сборка с cmake/ninja/auto-tools/clang 3.3/gcc 4.6.

Также достаточно много изменений в целевых архитектурах LLVM.

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

 ,

anonymous
()