The OpenNET Project / Index page

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

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

30.04.2026 22:50 (MSK)

После года разработки опубликован релиз свободного набора компиляторов GCC 16.1, первый значительный выпуск в новой ветке GCC 16.x. В соответствии со схемой нумерации выпусков, версия 16.0 использовалась в процессе разработки, а незадолго до выхода GCC 16.1 уже ответвилась ветка GCC 17.0, на базе которой будет сформирован следующий значительный релиз GCC 17.1.

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

  • Режим по умолчанию для языка C++ переключён на использование стандарта C++20 (диалект GNU C++20, -std=gnu++20) вместо ранее предлагавшегося C++17. Реализация C++20 в стандартной библиотеке объявлена стабильной.
  • В состав включён экспериментальный фронтэнд ga68 для компиляции программ на языке программирования Алгол 68 (Algol 68).
  • Добавлена возможность вывода диагностической информации в формате HTML. Расширена информация о ходе выполнения программы, включаемая при выводе диагностики в формате SARIF, основанном на JSON (поддержка "-fdiagnostics-format=json" прекращена).
  • Расширены оптимизации на этапе связывания (LTO, Link-Time Optimization). Добавлена опция "-flto-toplevel-asm-heuristics", включающая эвристику для улучшения оптимизации кода с ассемблерными вставками. Техника спекулятивной девиртуализации (-fdevirtualize-speculatively) теперь не ограничена преобразованием виртуальных методов и может применяться при преобразовании в прямые вызовы любых косвенных вызовов функций, например, вызовов через указатели.
  • Реализована поддержка векторизации циклов, для которых на этапе компиляции неизвестно число итераций. Повышена эффективность обработки досрочных выходов из цикла (например, через break).
  • Добавлена экспериментальная поддержка многих возможностей недавно утверждённого стандарта C++26. Например, реализованы:
    • Рефлексия (Reflection, "-freflection"), позволяющая отслеживать и модифицировать элементы программы на стадии компиляции. Добавлены новые операторы "^^" для получения метаинформации о грамматической конструкции и "[:…:]" для выполнения обратного преобразования. Для преобразования и обработки полученной в ходе инспектирования информации предложена библиотека std::meta и доступны такие возможности, как вычисления с константами.
    • Контрактное программирование (Contracts), позволяющее определять формальные спецификации интерфейсов при помощи трёх новых операторов: pre (предусловие), post (постусловие) и contract_assert (проверка утверждения). Оператор "pre" определяет предварительные условия, которые должны быть выполнены перед вызовом (проверка входных данных); "post" - условия, которые должны соблюдаться после выполнения (требования к выходным данным); contract_assert - условия возникновения исключений. Возможность появится в GCC 16.
    • Оператор "template for" для перебора элементов, таких как пакеты параметров, похожие на кортежи объекты и результаты рефлексии (метаобъекты), на этапе компиляции в стиле обычного цикла. При выполнении "template for" тело цикла раскрывается для каждого элемента и каждая итерация обрабатывается в отдельной области видимости, в которой элемент последовательности, по которой итерируется цикл, является константой для каждой итерации и может участвовать в константных выражениях (constexpr). В контексте рефлексии "template for" может применяться для обхода свойств классов или перечислений.
    • Библиотека std::simd для распараллеливания выполнения операций над данными при помощи наборов инструкций SIMD, таких как AVX-512 и NEON, с использованием стандартной системы типов C++.
    • Библиотеки std::inplace_vector, std::optional<T&>, std::copyable_function, std::function_ref, std::indirect, std::polymorphic и std::owner_equal.
  • Реализованы возможности, связанные со стандартом C++23, такие как явное управление временем жизни объектов и поддержка указания кодировки символов диагностических сообщений.
  • Расширена поддержка стандарта C23, например, реализована возможность использования атрибута "counted_by" для проверки корректности использования указателей.
  • Продолжена реализация стандартов OpenMP 5.0, 5.1, 5.2 и 6.0 (Open Multi-Processing), определяющих API и способы применения методов параллельного программирования на многоядерных и гибридных (CPU+GPU/DSP) системах с общей памятью и блоками векторизации (SIMD). Улучшена реализация спецификаций параллельного программирования OpenACC 3.0, 3.3 и 3.4, определяющих средства для выноса операций (offloading) на GPU и специализированные процессоры, такие как NVIDIA PTX.
  • В бэкенд для архитектуры x86 добавлена поддержка процессоров AMD на основе микроархитектуры Zen6 (-march=znver6), а также процессоров Intel Wildcat Lake (-march=wildcatlake) и Nova Lake (-march=novalake).
  • В бэкенде генерации кода для GPU AMD Radeon (GCN) реализована поддержка ускорителей AMD Instinct MI300 (gfx942).
  • Для архитектур RISC-V, ARM, S/390 и LoongArch реализована поддержка типа "_BitInt (N)" для определения целых чисел с указанным числом битов.

  1. Главная ссылка к новости (https://gcc.gnu.org/pipermail/...)
  2. OpenNews: Релиз набора компиляторов GCC 15
  3. OpenNews: GCC-бэкенд достиг возможности полной раскрутки компилятора rustc. Выпуск Rust Coreutils 0.1.0
  4. OpenNews: Релиз набора компиляторов LLVM 22
  5. OpenNews: Утверждён стандарт C++26
Лицензия: CC BY 3.0
Короткая ссылка: https://opennet.ru/65329-gcc
Ключевые слова: gcc, compile
При перепечатке указание ссылки на opennet.ru обязательно


Обсуждение (32) Ajax | 1 уровень | Линейный | +/- | Раскрыть всё | RSS
  • 1.1, dekabu (ok), 23:02, 30/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +5 +/
    Отлично, повод пересобирать мир!
     
     
  • 2.5, Аноним (5), 23:19, 30/04/2026 [^] [^^] [^^^] [ответить]  
  • –3 +/
    Это нинужно. Нужен LLVM и то, только ради того, что он нужен, чтобы Раст собрать.
     
     
  • 3.7, Аноним (7), 23:34, 30/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    А сначала собрать самого себя. Возможно, через череду версий.
     
  • 3.8, Сладкая булочка (?), 23:58, 30/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > чтобы Раст собрать

    Расту нужен стандарт и поддержка в gcc.

     
     
  • 4.11, Аноним (11), 00:20, 01/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Расту нужен стандарт

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

     
     
  • 5.13, Аноним (13), 00:22, 01/05/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Тогда будет зоопарк реализаций этих самых фич. Каким именно лесом при том пойдёт эта ваша безопасТность догадайтесь сами.
     
     
  • 6.14, Аноним (11), 00:26, 01/05/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Тогда будет зоопарк реализаций этих самых фич. Каким именно лесом при том пойдёт эта ваша безопасТность догадайтесь сами.

    Шта? Пока что зоопарк как раз в C++, а не в Расте. Тебе напомнить, сколько существует реализаций стандартной библиотеки C++ - и каждая со своим набором багов?

     
     
  • 7.15, Аноним (13), 00:28, 01/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Так вы же про раст говорили. Не отклоняйтесь от темы.
     
     
  • 8.17, Аноним (11), 00:42, 01/05/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    Чел, ты вообще за логической нитью следить не способен Ты мне говоришь, что без... текст свёрнут, показать
     
  • 7.21, Аноним83 (?), 01:09, 01/05/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    А тебе напомнить сколько реализаций стандартного TCP/IP стёка существует и почему?
     
     
  • 8.23, Аноним (11), 01:17, 01/05/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Конечно, напомни Только иди подугли сперва, чем стандарт API для конкретного яз... текст свёрнут, показать
     
  • 5.18, Сладкая булочка (?), 00:47, 01/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >> Расту нужен стандарт
    > Пусть язык нормально развивается

    Нормально - это как?

    > вместо того, чтобы годами сидеть ждать базовых фич

    Каких, например?

     
     
  • 6.19, Аноним (11), 00:55, 01/05/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    > Сладкая булочка
    > это как?
    > Каких, например?

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

     
     
  • 7.22, Сладкая булочка (?), 01:16, 01/05/2026 [^] [^^] [^^^] [ответить]  
  • +1 +/
    >> Сладкая булочка
    >> это как?
    >> Каких, например?
    > Я смотрю, ты держишь марку. Надеюсь, когда-нибудь ты все-таки научишься вести конструктивный
    > и содержательный диалог, а не сыпать вопросами в ответ на неудобные
    > тебе тезисы.

    Пффф. Тебя конкретно спросили уточнить свои претензии всесто абстракных, а ты сразу перешел на личности. Все что нужно знать о растовщиках.

     
     
  • 8.28, Аноним (11), 01:22, 01/05/2026 Скрыто ботом-модератором     [к модератору]
  • –1 +/
     
     
  • 9.29, Сладкая булочка (?), 01:28, 01/05/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 4.25, Аноним (25), 01:17, 01/05/2026 Скрыто ботом-модератором     [к модератору]
  • –1 +/
     
     
  • 5.27, Сладкая булочка (?), 01:21, 01/05/2026 Скрыто ботом-модератором     [к модератору]
  • +/
     
  • 4.31, laindono (ok), 01:58, 01/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Стандартизация нужна, если есть куча реализаций и надо обеспечить их совместимость. В первую очередь ради этого.

    Самая большая проблема C/C++ - отсутствие эталонной реализации и наличие стандарта, который делают обкуренные девочки-волшебницы. Похожая ситуация кстати с W3C. Оторванность от реальности приводит к куче документов, которые невозможно читать и реализовывать.

    В среде Rust более прагматичный подход. Кто угодно может пойти и добавить какую-то фичу. И тебе для этого нужно написать RFC и тебе же его реализовывать. Весь процесс публичен и открыт. Все минусы подобного подхода минимизируются через долгий (иногда годы) процесс обсуждений, проверок, ревью, тестов и так далее. Порог входа основан исключительно на качествах программиста, никаких искусственных барьеров.

    По итогу получается, что Rust делают программисты для программистов. Не какие-то странные теоретики-бюрократы. По итогу имеем самый документированный язык программирования. Фактически эталон того, как должен работать наукоёмкий проект с открытым исходным кодом. Важен не столько сам код, а комьюнити вокруг.

     
  • 3.20, Аноним83 (?), 01:08, 01/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Это же нарушение канонов!
    По канону положено: curl | sh  делать, никак иначе, только так безопасный язык безопасно скачивает безопасный компилятор безопасного основополагющего системного языка!
     
     
  • 4.24, Сладкая булочка (?), 01:17, 01/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Это же нарушение канонов!
    > По канону положено: curl | sh  делать, никак иначе, только так
    > безопасный язык безопасно скачивает безопасный компилятор безопасного основополагющего
    > системного языка!

    Там еще sudo надо добавить в команду (для безопасности, конечно)

     
     
  • 5.32, Аноним83 (?), 02:04, 01/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Ну что же вы!
    Только sudo-rs! Фу на эту додовускую дырявую sudo!
     

  • 1.2, Аноним (2), 23:05, 30/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Спасибо за LTO, но пока чуваки типа этих https://github.com/skeeto/w64devkit будут исключать LTO из за своих кривых рук, мне придется сидеть на GCC 13.
     
     
  • 2.4, Аноним (4), 23:13, 30/04/2026 [^] [^^] [^^^] [ответить]  
  • –1 +/
    Lto это ладно, из-за чуваков типа этих https://www.mingw-w64.org/ приходится на gcc-12 сидеть. Ну во всяком случае я собирал dxvk всеми тулчейнами и определённые шейдеры не сегфолтились только в 12. Так бы до сих пор winegcc собирал и проблем не знал.
     
     
  • 3.6, Аноним (5), 23:33, 30/04/2026 [^] [^^] [^^^] [ответить]  
  • +/
    >  всеми тулчейнами и определённые шейдеры не сегфолтились только в 12

    С - Стандарт.

     
  • 3.9, эксперт по всему (?), 00:14, 01/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    а мог бы собрать с UBSAN, найти где там UB в их г-коде и пофиксить
     
     
  • 4.16, Аноним (4), 00:33, 01/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Я на тот момент уже запарился тулчейны перебирать и отлаживать, там вроде потом подкрутили флаги кодогенератора чтобы он не лажал (типа из-за инструкций avx было).
     

  • 1.3, Джон Титор (ok), 23:13, 30/04/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • +/
    > Продолжена реализация стандартов OpenMP 5.0, 5.1, 5.2 и 6.0 (Open Multi-Processing), определяющих API и способы применения методов параллельного программирования на многоядерных и гибридных (CPU+GPU/DSP) системах с общей памятью и блоками векторизации (SIMD). Улучшена реализация спецификаций параллельного программирования OpenACC 3.0, 3.3 и 3.4, определяющих средства для выноса операций (offloading) на GPU и специализированные процессоры, такие как NVIDIA PTX.

    Круто

     
  • 1.10, Аноним (10), 00:16, 01/05/2026 [ответить] [﹢﹢﹢] [ · · · ]  
  • –1 +/
    Круто. Опять работающие инструкции по сборке пакетов править.
     
     
  • 2.12, Аноним (11), 00:21, 01/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    > Опять работающие инструкции по сборке пакетов править.

    Какие-то проблемы линуксоидов.

    Был бы поумнее - давно бы уже зашил нужный стандарт C++ во флажках компилятора.

     
  • 2.26, Аноним (25), 01:20, 01/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    Да-да, ещё назови код который забросили во времена C++98 работающим.
     
     
  • 3.30, анон (?), 01:52, 01/05/2026 [^] [^^] [^^^] [ответить]  
  • +/
    не забросили, а закончили
     

     Добавить комментарий
    Имя:
    E-Mail:
    Текст:



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

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