Након годину дана интензивног развоја, најављено је издање нове верзије „GCC 15.1“, која је позиционирана као прва стабилна верзија у оквиру нове 15.x гране овог популарног компајлерског пакета отвореног кода.
Ово издање не само да званично покреће нову GCC 15 серију, већ и означава почетак припрема за развој GCC 16, јер је грана 16.0 паралелно подељена и поставиће темеље за следеће велико издање, GCC 16.1.
ГЦЦ 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 стандард, како се уводе нове функције као што су оператор „пријатељ“, употреба constexpr са варијантама новог оператора и побољшања у синтакси за структуриране везе и атрибуте као што је musttail за гарантовану рекурзију репа.
Подршка за C++23 је такође проширена са новим правилима за коришћење извоза, побољшањима у руковању привременим објектима и експерименталном имплементацијом модула std и std.compat у libstdc++. Поред тога, безбедност је појачана за иницијализацију уније, а компајлирање кода је побољшано захваљујући ефикаснијем систему хеширања шаблона.
Нова упозорења и побољшања у статичкој анализи
Систем од Статичка анализа је добила визуелни редизајн који истиче проблеме кроз симболе, Савети за миграцију на C23 и нову библиотеку libgdiagnostics што омогућава поновну употребу дијагностичке логике у другим пројектима. Такође је уведена подршка за генерисање извештаја у SARIF формату, што олакшава интеграцију са модерним алатима за анализу кода.
Ат Постојећа упозорења се додају новим, као -Wanalyzer-undefined-behavior-ptrdiff да би се открила одузимања између неповезаних показивача, –Завршни празан простор и почетни празан простор да означи непотребан размак, и –Заштита за заглавље да би се откриле грешке у заштити укључивања заглавља.
Оптимизације и подршка
Међу значајним оптимизацијама, Укључен је инкрементални режим компајлирања за LTO (Оптимизација времена повезивања), дизајнирана да убрза рекомпилације када су промене минималне. Такође векторизација петљи је побољшана, чак и у случајевима када величина низова није позната у време компајлирања, и повећава брзину компајлирања веома великих датотека.
Што се тиче подршке, ARMv64 екстензије су додате у AArch8, подршка за нове процесоре као што је 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). Додата је подршка за неозначене целе бројеве у Фортрану, а усвајање OpenMP 5.0 до 6.0 је унапређено, укључујући побољшања интероперабилности и обједињено коришћење меморије на графичким процесорима.