
После года активной разработки состоялся релиз свободного набора компиляторов GCC 16.1. Это первый стабильный выпуск в рамках новой ветки 16.x. Согласно устоявшейся традиции нумерации, версия 16.0 использовалась в процессе подготовки релиза, а незадолго до выхода 16.1 проект перешел к формированию кодовой базы для будущего GCC 17.0.
Основные изменения и улучшения
В новой версии разработчики сосредоточились на внедрении современных стандартов программирования и улучшении механизмов оптимизации кода.
Языки и стандарты
- C++ по умолчанию: Стандарт C++20 (диалект GNU C++20,
-std=gnu++20) стал основным режимом работы компилятора, заменив C++17. Стабильность реализации C++20 в стандартной библиотеке официально подтверждена. - Экспериментальный Алгол 68: В состав GCC включен фронтэнд
ga68для работы с языком программирования Алгол 68. - Поддержка C++26: Добавлена экспериментальная поддержка ключевых возможностей будущего стандарта C++26:
- Рефлексия: Внедрена функциональность (
-freflection) для анализа и модификации структуры программы на этапе компиляции с помощью новых операторов^^и[: …:], а также библиотекиstd::meta. - Контрактное программирование: Введены операторы
pre(предусловие),post(постусловие) иcontract_assertдля формальной верификации интерфейсов. - Template for: Реализована конструкция для циклической обработки метаобъектов и параметров шаблонов во время компиляции.
- Библиотеки: Появились
std::simdдля эффективной работы с AVX-512 и NEON, а также новые типы:std::inplace_vector,std::optional,std::copyable_function,std::function_ref,std::indirect,std::polymorphicиstd::owner_equal.
- Рефлексия: Внедрена функциональность (
- Развитие стандартов C23, OpenMP и OpenACC: Расширена поддержка стандарта C23 (в частности, атрибут
counted_byдля контроля указателей). Обновлены реализации параллельных вычислений OpenMP (включая версию 6.0) и OpenACC (3.0–3.4) для работы с гибридными системами CPU+GPU.
Диагностика и оптимизация
- Форматы вывода: Добавлена возможность генерации диагностических сообщений в HTML-формате. Взамен устаревшего JSON-формата для SARIF расширен объем данных, передаваемых в этом стандарте.
- LTO и векторизация: Улучшены оптимизации на этапе связывания (LTO) с новой эвристикой
-flto-toplevel-asm-heuristics. Техника спекулятивной девиртуализации теперь работает не только с виртуальными методами, но и с любыми косвенными вызовами. Также оптимизирована векторизация циклов с неизвестным числом итераций и досрочными выходами.
Поддержка аппаратных архитектур
Обновления затронули бэкенды для широкого спектра процессоров:
- x86: Добавлена поддержка архитектур AMD Zen6 (
-march=znver6), Intel Wildcat Lake и Nova Lake. - GPU: В бэкенде AMD Radeon (GCN) появилась поддержка ускорителей Instinct MI300 (gfx942).
- Специализированные типы: Для RISC-V, ARM, S/390 и LoongArch реализована поддержка
_BitInt(N)для работы с целыми числами произвольной битовой ширины.
Источник: https://www.linux.org.ru






