След година на интензивно развитие, обявено е издаването на новата версия на «GCC 15.1», която е позиционирана като първата стабилна версия в рамките на новия 15.x клон на този популярен пакет компилатори с отворен код.
Тази версия не само официално стартира новата серия GCC 15, но и отбелязва началото на подготовката за разработването на GCC 16, тъй като клонът 16.0 е бил разклонен паралелно и ще положи основите за следващата голяма версия, GCC 16.1.
GCC 15.1 Основни нови функции
Една от най-забележителните промени в тази нова версия е, че GCC 15.1 приема стандарта C23 по подразбиране за компилиране на C код, използвайки опцията -std=gnu23. Тази актуализация замества предишния стандарт, използван по подразбиране, C17 (-std=gnu17), и въвежда редица нови функции на новия стандарт. Сред тях е и константата nullptr, типът _BitInt(n) и ключовите думи bool, true и false, което може да причини конфликти със съществуващите идентификатори в стария код.
Друга нова функция, която GCC 15.1 включва, е #embed директива за вграждане на двоични данни, и атрибути като „непоследователност“ и „възпроизводимост“, които осигуряват по-голям контрол върху реда на изпълнение и определянето на последователни резултати. Освен това са внедрени елементи от бъдещия стандарт C2Y, като например променливи, декларирани в условията if, диапазони от стойности в case оператори, имагинерни суфикси i и j и поддръжка за оператори ++ и —, прилагани към комплексни числа.
Подобрения в C++ и бъдещият C++26
В случая с езика C++, новата версия на GCC 15.1 реализира функции, които се обсъждат за стандарта C++26, с въвеждането на нови функции, като например оператора „friend“, използването на constexpr с варианти на новия оператор и подобрения в синтаксиса за структурирани връзки и атрибути, като например musttail за гарантирана опашна рекурсия.
Поддръжката на C++23 също е разширена с нови правила за използване на export, подобрения в обработката на временни обекти и експериментална имплементация на модулите std и std.compat в libstdc++. Освен това, сигурността е засилена за инициализация чрез обединение, а компилацията на код е подобрена благодарение на по-ефективна система за хеширане на шаблони.
Нови предупреждения и подобрения в статичния анализ
Система Статичният анализ получи визуален редизайн който подчертава проблемите чрез символи, Съвети за мигриране към C23 и нова библиотека libgdiagnostics което позволява повторно използване на диагностичната логика в други проекти. Въведена е и поддръжка за генериране на отчети във формат SARIF, което улеснява интеграцията със съвременни инструменти за анализ на код.
при Съществуващите предупреждения се добавят към новите, като -Wanalyzer-undefined-behavior-ptrdiff за откриване на изваждания между несвързани указатели, –Wtrailing-whitespace и -Wleading-whitespace за обозначаване на ненужни празни пространства и –Защита на главата за откриване на грешки в защитите за включване на заглавки.
Оптимизации и поддръжка
Сред забележителните оптимизации, Включен е режим на инкрементална компилация за LTO (Оптимизация на времето за свързване), предназначена да ускори рекомпилациите, когато промените са минимални. Също така векторизацията на цикъла е подобрена, дори в случаите, когато размерът на масивите не е известен по време на компилация, и увеличава скоростта на компилиране на много големи файлове.
От страна на поддръжката, към AArch64 са добавени разширения за ARMv8, поддръжка за нови процесори като Apple M3, Cortex-X925 и NVIDIA Grace и разширява платформата MinGW. Генерирането на код за графични процесори AMD Radeon е подобрено с Експериментална поддръжка за новите серии GFX9, GFX10.3 и GFX11. За архитектурата x86 е активирана поддръжката за AVX10.2 и нови AMX инструкции, а поддръжката за Xeon Phi Knights е преустановена.
Освен това, GCC 15.1 въвежда компилатор за COBOL (gcobol), с поддръжка за архитектури x86-64 и AArch64 и актуализирана имплементация на езика D (версия 2.111.0). Добавена е поддръжка за неподписани цели числа във Fortran, а приемането на OpenMP 5.0 до 6.0 е усъвършенствано, включително подобрения в оперативната съвместимост и унифицирано използване на паметта на графичните процесори.