LLVM 17.0 уже выпущен и это его новости

Логотип ЛЛВМ

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

После шести месяцев разработки Представлена ​​новая версия LLVM 17.0, в котором в Clang 17.0 были реализованы различные улучшения, изменения, исправления ошибок и прежде всего разные важные аспекты.

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

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

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

В представленной новой версии LLVM 17.0 необходимо учитывать различные важные аспекты, среди которых, например, улучшения серверной части X86, ну он добавило поддержка расширений архитектура набора команд ISA SHA512, ISA SM3, ISA SM4 и ISA AVX-VNNI-INT16.

Помимо этого, в нем также подчеркивается улучшения в серверные возможности для архитектуры RISC-V которые значительно расширились, поскольку добавлена ​​поддержка процессора sifive-x280.

Еще одно изменение, которое мы можем обнаружить, — это Реализована поддержка расширений процессора XTH.*, а также совместимость с расширениями LSX, LASX, LVZ и LBT ISA к серверной части архитектуры LoongArch.

Улучшены серверные части для архитектур AArch64, ARM, WebAssembly, MIPS, PowerPC, AMDGPU, расширены возможности компоновщика LLD, а также добавлена ​​новая команда «регистрировать информацию» в отладчик LLDB для отображения всей известной информации о записи.

Что касается улучшений в Clang 17.0, следует отметить, что были реализованы функции, определенные в будущем стандарте C2x, такие как ключевые слова bool, static_assert, aligns, alignof и thread_local, а также возможность указывать пустые квадратные скобки «{ } » для инициализации нулевыми значениями.

Кодo C предоставляет возможность пересылать выражение «goto» внутри блоков «asm» через косвенно выбранные теги добавлена ​​поддержка расширения C, которое позволяет использовать тип вместо выражения в качестве первого операнда в «_Generic», а также позволяет константным выражениям на языке C использовать структуры, объединения и массивы, объявленные с атрибутом const.

Что касается улучшений, связанных со стандартом C++20, отмечается, что теперь На всех платформах, кроме Windows, имеется полная поддержка Coroutines. Кроме того, были реализованы дополнительные требования к операциям сравнения константных выражений.

Также подчеркивается, что сейчасКорректный анализ лямбда-шаблонов гарантирован. указанный сразу после параметров шаблона и содержащий в блоке переменную с зависимым типом. Зарезервировано использование двойного подчеркивания в пользовательских литералах и запрещено использование ключевого слова «operator» в определениях функций с зарезервированными идентификаторами в имени.

Что же касается улучшения, которые необходимо внести в стандарт C++23 , упоминается, что он находится на финальной стадии утверждения ISO, поскольку изменена область действия окончательного возвращаемого типа в лямбда-функциях сначала посмотреть на крючки, а затем на окружающий текст.

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

  • Добавлена ​​возможность определять многомерные массивы с помощью
  • При компиляции приложений C++ с использованием режима оптимизации "-O0" улучшена генерация кода для вызовов.
  • Добавлена ​​поддержка переменной среды NO_COLOR для отключения цвета вывода.
  • Значительно расширены инструменты статического анализа и диагностики, например, добавлены новые проверки переполнения знаковых целых чисел, коррекция лямбда-шаблонов, выражения constexpr, сравнения нулевых указателей, использование неинициализированных структур и т.д.
  • Библиотека Libc++ продолжает реализовывать поддержку возможностей стандартов C++20 и C++23, а также начата работа по обеспечению поддержки спецификации C++26.
  • Добавлена ​​поддержка выражения «требуется cplusplus23» в описаниях соединений между заголовочными файлами и модулями.

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


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

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

*

*

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