LINUX.ORG.RU

Clang


69

3

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

IWYU 0.21

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

Вышел релиз IWYU (или include-what-you-use), программы позволяющей находить избыточные и предлагать недостающие #include в вашем коде на C/C++.

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

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

 , iwyu

NickNotNick
()

Выпуск LLVM 16

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

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

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

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

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

 , ,

fsb4000
()

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
()

Открыт исходный код компилятора 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___
()

Компилятор Clang включён в базовую поставку OpenBSD

Группа BSD

Компилятор Clang добавлен в базовую сборку OpenBSD для платформ i386 и x86_64 в качестве альтернативы GCC.

Ранее Clang поставлялся лишь для arm64.

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

 ,

Valman_new
()

Вышел 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
()

Qt Creator 3.6.0

Группа Open Source

15-го декабря 2015 команда разработчиков представила выпуск Qt Creator 3.6.0.

Данный выпуск примечателен одним большим нововведением — редактором UML-like диаграмм. Однако этот редактор все еще находится в состоянии «экспериментальной функциональности», поэтому отключен по умолчанию. Для включения необходимо проследовать в меню Help > About Plugins > ModelEditor и отметить ModelEditor. Так как данный редактор поддерживает большое количество различных типов диаграмм и стилей элементов, его документация была вынесена на отдельную веб-страничку. Поблагодарим Jochen Becher за такое замечательное расширение!

Также кодовая модель Clang получила множество улучшений. Clang Fix-its теперь доступны через меню Refactor. Теперь Qt Creator умолчанию показывает больше диагностических сообщений (отрегулировать показываемые сообщения можно в меню C++ > Code Model).

В Qt Designer появилась возможность быстро переключатся между *.ui.qml и соответствующим *.qml файлами (аналогично Switch Source/Form для Qt Widgets). В дополнение, Connection Editor и Path Editor стали доступны для opensource-edition (ранее были доступны только в коммерческой версии).

Для проектов QMake появился новый тип профиля — Profiling (Release c внешними отладочными символами). Для проектов CMake теперь (наконец) можно выбирать стандартные CMake-профили: Debug, Release, ReleaseWithDebugInfo и MinSizeRelease. На OS X добавлена возможность настраивать то, будет ли Qt Creator считать файловую систему чувствительной к регистру, или нет (Preferences > Environment > System).

Важная заметка для платформы Linux x86_32:
Начиная с выпуска 3.6, для платформы Linux x86_32 прекращена поддержка бинарных сборок на qt.io. Однако, сборка из исходных кодов все еще официально поддерживается.

Полный список изменений

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

 , , ,

KennyMinigun
()

Начало тестирования KDevelop 5.0

Группа KDE

После более чем года разработки, стала доступна первая бета-версия многоязыковой среды разработки KDevelop 5.0.

Новая версия примечательна следующими изменениями:

  • Код портирован на KDE frameworks 5 и Qt 5.
  • Встроенные парсер и семантический анализатор С++ заменены на работу с CLang. Данное решение позволило проекту избавиться от многих проблем со старым парсером, а также перенаправить усилия разработчиков проекта на улучшение KDevelop в других областях. Использование CLang также позволяет легко и на должном уровне получить поддержку языков C и Objective-C. Кроме того, предупреждения компилятора теперь будут также доступны в IDE, в ряде случаев исправляемые одним нажатием кнопки или комбинацией клавиш.
  • Плагин поддержки CMake теперь, вместо встроенного интерпретатора CMake, использует метаданные от самого CMake.
  • Проведена чистка кода.
  • Улучшения производительности.
  • Официальная поддержка QML, JS.
  • Официальная поддержка QMake.

Из планов проекта также отмечается желание обеспечить поддержку языков Rust и Go. Проект с радостью примет желающих помочь в работе над поддержкой этих языков.

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

 , , , ,

Pavval
()

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
()

Chrome перешел на Clang

Группа Интернет

Начиная с Chrome 38, при сборке релизов для Linux разработчики стали использовать Clang вместо GCC.

Сообщается, что особых проблем (кроме невозможности запуска получившихся сборок в устаревших 32-разрядных дистрибутивах Debian) не возникло. Переход на Clang позволил сократить размер исполняемых файлов на 8% без потерь в производительности (слегка ускорился запуск браузера, в одних тестах наблюдается незначительный прирост производительности, в других — такое же незначительное ухудшение).

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

 ,

anonymous
()

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

Группа Linux General

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

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

 , , ,

pedobear
()

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 во FreeBSD переходит в завершающую стадию

Группа BSD

В дереве HEAD FreeBSD размещен коммит, отключающий на архитектурах i386, amd64 и arm сборку gcc и libstdc++. Взамен используется clang и libc++. По всей видимости, версия 10.0 FreeBSD будет первой, в которой clang будет использоваться по умолчанию.

Исходя из сообщения, отключение сборки gcc обусловлено тем, что значительное количество портов системы теперь можно собрать с помощью clang.

GCC по-прежнему доступен для установки из портов, либо из исходных текстов системы. Включить его сборку возможно с помощью директив WITH_GCC и WITH_GNUCXX в src.conf.

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

 ,

Lothlorien
()

В 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
()

Широкая дискуссия о будущем GCC

Группа GNU's Not Unix

В прошедший вторник в список рассылки GCC попало одно письмо, вызвавшее множество ответов и даже интересное обсуждение о будущем GNU Compiler Collection, о его конечных целях и об их достижимости. В первом письме просто был задан вопрос о примерных сроках полной реализации стандарта ISO C++11. Но по мере разрастания нити Diego Novillo из Google, хорошо зарекомендовавший себя в роли разработчика GCC, даже высказал опасения, что GCC уже прошёл точку невозврата и ему грозит естественная смерть.

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

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

 ,

quiet_readonly
()

Вышел LLVM 3.2

Группа Open Source

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

Разработчики называют данную версию большим скачком, она разрабатывалась более 6 месяцев и содержит большое количество улучшений и новой функциональности.

Clang теперь имеет лучшую в отрасли поддержку C++11, улучшена диагностика, улучшения в C11 и Obj-C (включая поддержку «ObjC literals»). Статический анализатор Clang теперь имеет поддержку кроссфункционального анализа вместе с улучшенной поддержкой Objective-C.

LLVM 3.2 теперь включает:

  • автоматический векторизатор (в ранней стадии разработки);
  • поддержку тюнинга для различных процессоров архитектуры ARM;
  • поддержку кодогенерации NVIDIA PTX (промежуточный код для устройств CUDA);
  • значительные улучшения в фазе компиляции SROA;
  • улучшения в поддержке AVX2 для процессоров x86;
  • значительные улучшения в бэкэнде для процессоров MIPS (включая поддержку ассемблера и дизассемблера);
  • серьезные улучшения в поддержке ELF для архитектуры PowerPC64;
  • LLDB — новый инструментарий для отладки;
  • многочисленные исправления ошибок и минорные улучшения.

Полный список изменений

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

 ,

unfo
()