Nakon godine intenzivnog razvoja, najavljeno je izdavanje nove verzije «GCC 15.1», koji je pozicioniran kao prva stabilna verzija unutar nove 15.x grane ovog popularnog paketa kompajlera otvorenog koda.
Ovo izdanje ne samo da službeno pokreće novu seriju GCC 15, već i označava početak priprema za razvoj GCC 16, budući da je grana 16.0 paralelno forkovana i postavit će temelje za sljedeće veliko izdanje, GCC 16.1.
GCC 15.1 Glavne nove značajke
Jedna od najznačajnijih promjena u ovoj novoj verziji je GCC 15.1 usvaja standard C23 kao zadano za kompajliranje C koda, pomoću opcije -std=gnu23. Ovo ažuriranje zamjenjuje prethodni standard koji se koristio prema zadanim postavkama, C17 (-std=gnu17), i uvodi niz novih značajki novog standarda. Među njima je i konstanta nullptr, tip _BitInt(n) i ključne riječi bool, true i false, što bi moglo uzrokovati sukobe s postojećim identifikatorima u naslijeđenom kodu.
Još jedna nova značajka koju GCC 15.1 uključuje je #embed direktiva za ugradnju binarnih podataka, i atribute poput nesekvenciranog i reproducibilnog, koji pružaju veću kontrolu nad redoslijedom izvršavanja i određivanjem konzistentnih rezultata. Osim toga, implementirani su elementi budućeg C2Y standarda, kao što su varijable deklarirane unutar if uvjeta, rasponi vrijednosti u case naredbama, imaginarni sufiksi i i j te podrška za operatore ++ i — primijenjene na kompleksne brojeve.
Poboljšanja u C++ i budući C++26
U slučaju jezika C++, nova verzija GCC 15.1 implementira značajke koje se raspravljaju za standard C++26, kako se uvode nove značajke poput operatora "friend", korištenje constexpr s varijantama novog operatora i poboljšanja sintakse za strukturirane veze i atribute poput musttail za zajamčenu repnu rekurziju.
Također je proširena podrška za C++23 s novim pravilima za korištenje izvoza, poboljšanjima u rukovanju privremenim objektima i eksperimentalnom implementacijom modula std i std.compat u libstdc++. Osim toga, sigurnost je pojačana za inicijalizaciju unija, a kompilacija koda je poboljšana zahvaljujući učinkovitijem sustavu hashiranja predložaka.
Nova upozorenja i poboljšanja u statičkoj analizi
Sistem Statička analiza dobila je vizualni redizajn koji ističe probleme kroz simbole, Savjeti za migraciju na C23 i novu biblioteku libgdiagnostics što omogućuje ponovnu upotrebu dijagnostičke logike u drugim projektima. Također je uvedena podrška za generiranje izvješća u SARIF formatu, što olakšava integraciju s modernim alatima za analizu koda.
u Postojeća upozorenja dodaju se novima, kao -Wanalyzer-nedefinirano-ponašanje-ptrdiff za otkrivanje oduzimanja između nepovezanih pokazivača, –Završni-bijeli prostor i -vodeći-bijeli prostor za označavanje nepotrebnih praznih prostora i –Zaštita zaglavlja za otkrivanje pogrešaka u zaštitama uključivanja zaglavlja.
Optimizacije i podrška
Među značajnim optimizacijama, Uključen je inkrementalni način kompilacije za LTO (Optimizacija vremena povezivanja), osmišljena za ubrzavanje rekompilacija kada su promjene minimalne. Također vektorizacija petlje je poboljšana, čak i u slučajevima kada veličina nizova nije poznata u vrijeme kompajliranja, i povećava brzinu kompajliranja vrlo velikih datoteka.
Što se tiče podrške, ARMv64 proširenja su dodana u AArch8, podrška za nove procesore poput Apple M3, Cortex-X925 i NVIDIA Grace, te proširuje MinGW platformu. Generiranje koda za AMD Radeon GPU-ove je poboljšano s Eksperimentalna podrška za nove serije GFX9, GFX10.3 i GFX11. Za x86 arhitekturu omogućena je podrška za AVX10.2 i nove AMX instrukcije, a podrška za Xeon Phi Knights je ukinuta.
Osim toga, GCC 15.1 uvodi kompajler za COBOL (gcobol), s podrškom za arhitekture x86-64 i AArch64 te ažuriranom implementacijom jezika D (verzija 2.111.0). Dodana je podrška za neoznačene cijele brojeve u Fortranu, a usvajanje OpenMP-a 5.0 do 6.0 je unaprijeđeno, uključujući poboljšanja interoperabilnosti i objedinjeno korištenje memorije na GPU-ima.