LLVM 16.0 и он был выпущен, и это его новости

Логотип ЛЛВМ

LLVM — это платформа для разработки компиляторов, а также помогающая создавать новые языки программирования и улучшать существующие языки.

После чуть более шести месяцев разработки, запуск новая версия проекта LLVM 16.0, версия, в которой реализовано большое количество изменений и улучшений.

Тем, кто не знаком с LLVM, следует знать, что это компилятор, совместимый с GCC (компиляторы, оптимизаторы и генераторы кода), который компилирует программы в RISC-подобный промежуточный битовый код виртуальной инструкции (низкоуровневая виртуальная машина с многоуровневой системой оптимизации).

Сгенерированный псевдокод может быть преобразован JIT-компилятором в машинные инструкции прямо во время выполнения программы.

Основные новые возможности LLVM 16.0

В представленной новой версии мы можем найти несколько важных улучшений. в кланг 16.0, из которых выделяется стандарт C++/ObjC++ по умолчанию, который установлен на gnu++17 (ранее gnu++14), который подразумевает поддержку функций C++17 с расширениями GNU по умолчанию. Использование элементов, определенных в стандарте C++17, разрешено в коде LLVM.

Еще одно заметное изменение заключается в том, что он был добавлен поддержка процессоров Cortex-A715, Cortex-X3 и Neoverse Расширения V2, Armv8.3 и многоверсионные функции для серверной части AArch64.
La совместимость с платформой Armv2, Armv2A, Armv3 и Armv3M сняты с производства. в бэкэнде архитектуры ARM, для которого не гарантировалась правильная генерация кода. Добавлена ​​возможность генерировать код инструкций по работе с комплексными числами и добавлено поддержка архитектур наборов инструкций (ISA) AMX-FP16, CMPCXADD, AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT в серверную часть X86.

Кроме того, повышены требования для сборки LLVM, Также сборка теперь должна быть совместима со стандартом C++17, т. е. для сборки требуется как минимум GCC 7.1, Clang 5.0, Apple Clang 10.0 или Visual Studio 2019 16.7.

С другой стороны, это также подчеркивает улучшенные серверные части для архитектур MIPS, PowerPC и RISC-V, а также поддержка отладки 64-битных исполняемых файлов для архитектуры LoongArch в отладчике LLDB и улучшенная обработка отладочных символов COFF.

Из других изменений которые выделяются:

  • В библиотеке Libc++ основная работа была сосредоточена на реализации поддержки новых возможностей стандартов C++20 и C++23.
  • Время компоновки было значительно сокращено в компоновщике LDD за счет распараллеливания операций сканирования переадресации и инициализации секции. Добавлена ​​поддержка сжатия разделов по алгоритму ZSTD.
  • Также выделены расширенные функции, реализованные в стандарте C++20.
  • захват структурированных ссылок в лямбда-функциях.
  • Оператор равенства в выражениях.
  • Возможность не указывать ключевое слово typename в некоторых контекстах,
  • В скобках добавлена ​​возможность инициализации ("Aggr(val1, val2)").
  • Реализованы функции, определенные в будущем стандарте C++2b.
  • Поддержка обеспечивается типом char8_t,
  • Расширен диапазон символов, разрешенных для использования в "\N{…}",
  • Добавлена ​​возможность использовать переменные, объявленные как "static constexpr", в функциях, объявленных как constexpr.
  • Реализованы функции, определенные в будущем стандарте C2x C:
  • Добавлена ​​поддержка загрузки нескольких файлов конфигурации (сначала загружаются файлы конфигурации по умолчанию, затем те, которые указаны с помощью флага «–config=», который теперь можно указывать несколько раз).
  • Изменен порядок загрузки конфигурационных файлов по умолчанию: clang пытается сначала загрузить файл - .cfg и если не находит, то пытается загрузить два файла .cfg и .cfg.
  • Добавлен новый флаг сборки «-fcoro-aligned-allocation» для обычного распределения с выравниванием по кадрам.
  • Добавлен флаг «-fmodule-output», чтобы включить модель однофазной сборки стандартных модулей C++.
  • Добавлен режим "-Rpass-analysis=stack-frame-layout" для диагностики проблем с расположением фрейма стека.
  • Добавлен новый атрибут __attribute__((target_version("cpu_features"))) и расширена функциональность атрибута __attribute__((target_clones("cpu_features1″,"cpu_features2",…))) для выбора конкретных версий функций, предоставляемых CPU AArch64 .
  • Расширенные средства диагностики:
  • Добавлено предупреждение "-Wsingle-bit-bitfield-constant-conversion" для обнаружения неявного усечения при присвоении единицы однобитовому битовому полю со знаком.
  • Расширенная диагностика для неинициализированных переменных constexpr.
  • Добавлены предупреждения «-Wcast-function-type-strict» и «-Wincompile-function-pointer-types-strict», чтобы выявить потенциальные проблемы при приведении типов функций.

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


Оставьте свой комментарий

Ваш электронный адрес не будет опубликован. Обязательные для заполнения поля помечены *

*

*

  1. Ответственный за данные: AB Internet Networks 2008 SL
  2. Назначение данных: контроль спама, управление комментариями.
  3. Легитимация: ваше согласие
  4. Передача данных: данные не будут переданы третьим лицам, кроме как по закону.
  5. Хранение данных: база данных, размещенная в Occentus Networks (ЕС)
  6. Права: в любое время вы можете ограничить, восстановить и удалить свою информацию.