Профиль: Аноним (вход | регистрация) неRU opennet.me  
The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

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

27.08.2026 21:42 (MSK)

После шести месяцев разработки представлен релиз проекта LLVM 23.1.0, развивающего инструментарий (компиляторы, оптимизаторы и генераторы кода), компилирующий программы в промежуточный биткод RISC-подобных виртуальных инструкций (низкоуровневая виртуальная машина с многоуровневой системой оптимизаций). Сгенерированный псевдокод может быть преобразован в машинный код для заданной целевой платформы или использован JIT-компилятором для формирования машинных инструкций непосредственно во время выполнения программы. На базе технологий LLVM проектом развивается компилятор Clang, поддерживающий языки программирования C, C++ и Objective-C.

Начиная с ветки 18.x проект перешёл на новую схему формирования номеров версий, в соответствии с которой нулевой выпуск ("N.0") используется в процессе разработки, а первая стабильная версия снабжается номером "N.1". Код проекта распространяется под лицензией Apache 2.0.

Среди улучшений в Clang 23:

  • Добавлена поддержка OpenCL C 3.1 (-cl-std=CL3.1).
  • Возможности, связанные с языком С:
    • Реализованы функции циклического битового сдвига stdc_rotate_left_{uc,us,ui,ul,ull} и stdc_rotate_right_{uc,us,ui,ul,ull}, а также функции изменения порядка следования элементов массива в памяти __builtin_stdc_memreverse8, stdc_memreverse8 и stdc_memreverse8u{8,16,32,64}, определённые в заголовочном файле stdbit.h для будущего стандарта C2y.
    • Разрешено обращаться к элементам структур через оператор "." внутри константных выражений (constexpr).
    • В функциях форматирования строк, таких как printf и scanf, реализована поддержка появившихся в стандарте C23 модификаторов размера: "%wN" для типа intN_t, "%wfN" для типа int_fastN_t, "%H" для типа _Decimal32, "%D" для типа _Decimal64 и "%DD" для типа _Decimal128.
  • Возможности, связанные с С++:
    • Во встроенной функции __is_trivially_equality_comparable реализована поддержка сравнения перечислений (enum).
    • Во всех режимах C++ разрешено использование ключевого слова "auto" для автоматического вывода типов параметров функций.
    • Добавлены флаги "-std=c++2d" и "-std=gnu++2d" для тестирования возможностей, развиваемых для стандарта, который выйдет после C++26.
    • Добавлена поддержка дополнительных именованных универсальных escape-символов.
    • Появившаяся в спецификации C++26 возможность использования структурированных привязок (structured binding) в контексте "constexpr" и "constinit" расширена поддержкой кортежеподобных структур (ранее поддерживались массивы и простые структуры).
    • Добавлена частичная поддержка утверждённого в стандарте C++26 оператора "template for" для перебора элементов на этапе компиляции в стиле обычного цикла. При выполнении "template for" тело цикла раскрывается для каждого элемента и каждая итерация обрабатывается в отдельной области видимости, в которой элемент последовательности, по которой итерируется цикл, является константой для каждой итерации и может участвовать в константных выражениях (constexpr). В контексте рефлексии "template for" может применяться для обхода свойств классов или перечислений.
    • Частично реализовано декорирование имён (Itanium mangling, создание уникальных имён символов для компоновщика), используемых для доступа к элементам пакета параметров по индексу.
    • Добавлена поддержка предложенного в стандарте C++20 синтаксиса для более эффективного определения зависимостей между модулями.
    • Арифметические операции с указателями после приведения производных и базовых типов теперь определяются как неопределённое поведение, что позволяет применять оптимизацию на основе девиртуализации вызовов.
    • Разрешено явно специализировать или создавать экземпляры operator() для generic-лямбд.
    • В операторах преобразования типов разрешено не указывать ключевое слово "typename" перед именем шаблона.
    • Разрешено объявлять специализации членов класса в области видимости класса.
    • В структурированных привязках (structured binding) для инициализаторов, возвращающих временные значения (prvalue), задействованы не ссылочные типы.
  • Добавлены встроенные функции __builtin_stdc_rotate_left, __builtin_stdc_rotate_right, __builtin_bitreverseg, __builtin_elementwise_clmul, __builtin_elementwise_pext, __builtin_elementwise_pdep, __builtin_stdc_leading_zeros, __builtin_stdc_leading_ones, __builtin_stdc_trailing_zeros, __builtin_stdc_trailing_ones, __builtin_stdc_first_leading_zero, __builtin_stdc_first_leading_one, __builtin_stdc_first_trailing_zero, __builtin_stdc_first_trailing_one, __builtin_stdc_count_zeros, __builtin_stdc_count_ones, __builtin_stdc_has_single_bit, __builtin_stdc_bit_width, __builtin_stdc_bit_floor, __builtin_stdc_bit_ceil.
  • Добавлены функции stdbit.h, применимые в константных выражениях (constexpr):
    • stdc_leading_zeros_{uc,us,ui,ul,ull}, stdc_leading_ones_{uc,us,ui,ul,ull},
    • stdc_trailing_zeros_{uc,us,ui,ul,ull}, stdc_trailing_ones_{uc,us,ui,ul,ull},
    • stdc_first_leading_zero_{uc,us,ui,ul,ull}, stdc_first_leading_one_{uc,us,ui,ul,ull}, stdc_first_trailing_zero_{uc,us,ui,ul,ull}, stdc_first_trailing_one_{uc,us,ui,ul,ull},
    • stdc_count_zeros_{uc,us,ui,ul,ull}, stdc_count_ones_{uc,us,ui,ul,ull},
    • stdc_has_single_bit_{uc,us,ui,ul,ull},
    • stdc_bit_width_{uc,us,ui,ul,ull}, stdc_bit_floor_{uc,us,ui,ul,ull}, stdc_bit_ceil_{uc,us,ui,ul,ull}.
  • В большинство встроенных функций "__atomic_" добавлена поддержка значений с плавающей запятой и указателей.
  • Добавлен заголовочный файл endian.h, включающий POSIX-функции для манипуляции порядком следования байт.
  • Поддерживаемая версия Unicode обновлена с 15.1 до 18.0.
  • В инструментарий для Linux и Windows добавлена поддержка механизма multilib, включаемого через флаг "-fmultilib-flag" и позволяющего использовать отдельные версии библиотек и заголовочных файлов для разных архитектур.
  • Добавлены новые флаги компилятора:
    • -fms-anonymous-structs / -fno-ms-anonymous-structs - включение/выключение поддержки расширений Microsoft для анонимных структур.
    • --precompile-reduced-bmi - генерация сокращённого BMI (Binary Module Interface) для импортируемого модуля.
    • -fdiagnostics-show-inlining-chain - показ информации об inline-развёртывании при диагностике при помощи атрибутов [[gnu::warning]] и [[gnu::error]].
    • -fcrash-diagnostics-tar - создание tar-архива с файлами для воспроизведения аварийного завершения для упрощения диагностики сбоев в компиляторе.
    • -fwin-cfg-mechanis - выбор режима защиты CFG (Control Flow Guard) для платформы Windows (automatic, dispatch и check).
    • -fstrict-bool - обработка загружаемых из памяти однобайтовых булевых значений только как 0 и 1.
  • Добавлены атрибуты:
    • stack_protector_ignore - выборочное отключение проверки безопасности локальных переменных внутри функции.
    • [[clang::no_outline]] - запрещает оптимизатору разделать код помеченной функции.
    • __attribute__((overflow_behavior)) - определяет поведение (wrap или trap) при переполнении чисел разных типов.
    • __attribute__((__personality__(...))) - назначение функции для раскрутки стека при возникновении исключений.
  • Расширены средства диагностики и статического анализа, добавлены новые проверки (несколько десятков улучшений, связанных с диагностикой).
  • В бэкенд для архитектуры X86 добавлена поддержка процессоров AMD на базе микроархитектуры Zen 6 (-march=znver6). Добавлена поддержка расширения набора команд AVX512BMM и реализованы встроенные функции на его основе.
  • В бэкенд для архитектуры AArch64 добавлена поддержка процессоров Arm AGI CPU (armagicpu), Hisilicon hip12 (hip12) и NVIDIA Rigel (rigel).
  • В бэкенде AMDGPU реализована начальная поддержка GPU GFX1310 на базе архитектуры RDNA 5. Добавлены встроенные функции __builtin_amdgcn_processor_is и __builtin_amdgcn_is_invocable.
  • Улучшены бэкенды для архитектур ARM, RISC-V, LoongArch64, MIPS, SystemZ, WebAssembly и PowerPC.
  • В компоновщике LLD реализовано распараллеливание загрузки входных файлов и маркировки секций для сокращения времени связывания крупных проектов.


  1. Главная ссылка к новости (https://discourse.llvm.org/t/l...)
  2. OpenNews: Релиз набора компиляторов LLVM 22
  3. OpenNews: LLVM ввёл правила применения AI-инструментов. Curl и Node.js ограничат выплаты за уязвимости из-за AI
  4. OpenNews: Представлен бэкенд TPDE-LLVM, работающий в 10-20 раз быстрее LLVM в режиме без оптимизации
  5. OpenNews: В Clang намерены добавить режим усиленной безопасности
  6. OpenNews: Релиз набора компиляторов GCC 16
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/66153-clang
Ключевые слова: clang, llvm
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (16) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, Malinovsky (?), 21:57, 27/08/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –7 +/
    Еще не проверял, но думаю они не вернули возможность алиасами убрать необходимость использования английского языка при программировании. Остальные спецсимволы отлично умещаются на ряде функциональных (F) клавиш и есть клавиатуры где этот ряд расположен в упор. Вот тут и проявляется сила разума тех кто поумнее и способен сделать себе среду разработки с комментариями на русском языке. Просто делается включение нужного файла замен английских команд русскими, что повышает читаемость текста, позволяет сократить длинные названия команд и так далее. В общем алиасы были мощным инструментом когда-то когда LLVM была отвязана от английского ,после чего деградировала.
     
     
  • 2.2, kravich (ok), 22:00, 27/08/2026 [^] [^^] [^^^] [ответить]  
  • +7 +/
    Отсыпь?
     
  • 2.3, Аноним (3), 22:07, 27/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Вот тут и проявляется сила разума тех кто поумнее и способен сделать себе среду разработки с комментариями на русском языке. Просто делается включение нужного файла замен английских команд русскими, что повышает читаемость текста, позволяет сократить длинные названия команд и так далее.

    Желаю тебе долго и вдумчиво парсить исходники одной MMO на китайском, а потом исходники другой MMO на французском.

    Под конец полирни один и тот же фильм на английском и его перевод на русский. Можешь потом ещё гоблинского перевода навернуть и призадуматься - а зачем опер так настойчиво коверкает перевод. Исходя из его коннотаций по каждому вопросу и содержимому формы номер четыре при приёме на работу (про этот мем ещё в старике Хоттабыче писали, см. вопрос про род занятий до определённого года) - ответ придёт сам собой.

     
  • 2.5, Аноним (5), 22:54, 27/08/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > замен английских команд русскими, что повышает читаемость текста

    Абсолютная дурка...

     
  • 2.7, Аноним (7), 23:10, 27/08/2026 [^] [^^] [^^^] [ответить]  
  • +2 +/
    Пишите в 1С, вам понравится. А здоровым людям код на русском или любом другом, кроме английского, не нужен и даже вреден.
     
  • 2.11, Аноним (11), 00:45, 28/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >В общем алиасы были мощным инструментом когда-то когда LLVM была отвязана от английского ,после чего деградировала.

    Мощному аналитическому уму не приходила мысль, что проект интернациональный, поэтому нужно единое средство общение? Что отмерло в следствие ненужности.

     

  • 1.4, Аноним (5), 22:53, 27/08/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > __attribute__((overflow_behavior)) - определяет поведение (wrap или trap) при переполнении чисел разных типов.

    Ну слава тебе господи, дождались наконец, кода таки появилась возможность включать/выключать проверки переполнений не целиком во всем translation unit, а для отдельных типов. Глядишь, скоро так и Turbo Pascal/Ada из 80 догонят.

     
  • 1.6, Аноним (6), 23:08, 27/08/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    debian.org и security.debian.org не открываются из РФ (((
     
     
  • 2.8, Аноним (8), 23:13, 27/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Там ещё новый виток деградации пошёл:
    https://habr.com/ru/news/1074730/
    https://habr.com/ru/articles/1075272/
     
     
  • 3.13, Аноним (11), 00:53, 28/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    По классикам: "Соврут и недорого возьмут."
     
  • 2.12, Аноним (11), 00:51, 28/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    0:50 по МСК. Открывается www.debian.org b www.debian.org/security/
    Мисье соврамши?
     
     
  • 3.15, Аноним (15), 01:02, 28/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    У меня тоже не открывается
     
     
  • 4.16, Аноним (15), 01:03, 28/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    А на мобильном интернете открывается
     

  • 1.9, Markx (?), 23:24, 27/08/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    Это тот самый LLVM, который сходу опрокинул GCC
     
     
  • 2.10, Аноним (10), 00:02, 28/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Это тот, который про... упустил все полимеры.

    Поддержка новых стандартов реализовывается с запозданием. Любят его только корпорации.

     
     
  • 3.14, Аноним (14), 01:02, 28/08/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Видимо суньор не отличает LLVM от Clang, мда уж
     
     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2026 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру