Nakon godinu dana intenzivnog razvoja, Najavljeno je izdavanje nove verzije «GCC 15.1», koja je pozicionirana kao prva stabilna verzija unutar nove 15.x grane ovog popularnog paketa kompajlera otvorenog koda.
Ovo izdanje ne samo da zvanično pokreće novu GCC 15 seriju, već i označava početak priprema za razvoj GCC 16, budući da je grana 16.0 paralelno deljena i postavit će temelje za sljedeće veliko izdanje, GCC 16.1.
GCC 15.1 Glavne nove karakteristike
Jedna od najznačajnijih promjena u ovoj novoj verziji je GCC 15.1 usvaja C23 standard kao podrazumijevano za kompajliranje C koda, korištenjem opcije -std=gnu23. Ovo ažuriranje zamjenjuje prethodni standard koji se koristio po zadanim postavkama, C17 (-std=gnu17), i uvodi niz novih funkcija 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 konflikte s postojećim identifikatorima u naslijeđenom kodu.
Još jedna nova funkcija koju GCC 15.1 uključuje je #embed direktiva za ugrađivanje binarnih podataka, i atribute kao što su nesekvencirano i ponovljivo, koji pružaju veću kontrolu nad redoslijedom izvršavanja i određivanjem konzistentnih rezultata. Pored toga, implementirani su elementi budućeg C2Y standarda, kao što su varijable deklarisane unutar if uslova, 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 funkcije koje se razmatraju za C++26 standard, kako se uvode nove funkcije kao što su operator "friend", upotreba constexpr-a sa varijantama novog operatora i poboljšanja u sintaksi za strukturirane veze i atribute kao što je musttail za garantovanu repnu rekurziju.
Podrška za C++23 je također proširena s novim pravilima za korištenje izvoza, poboljšanjima u rukovanju privremenim objektima i eksperimentalnom implementacijom modula std i std.compat u libstdc++. Pored toga, sigurnost je pojačana za inicijalizaciju unija, a kompajliranje koda je poboljšano zahvaljujući efikasnijem sistemu heširanja šablona.
Nova upozorenja i poboljšanja u statičkoj analizi
Sistem Statička analiza je dobila vizualni redizajn koji ističe probleme kroz simbole, Savjeti za migraciju na C23 i novu biblioteku libgdiagnostics što omogućava ponovnu upotrebu dijagnostičke logike u drugim projektima. Također je uvedena podrška za generiranje izvještaja u SARIF formatu, što olakšava integraciju s modernim alatima za analizu koda.
At Postojeća upozorenja se dodaju novima, kao -Wanalyzer-nedefinirano-ponašanje-ptrdiff za otkrivanje oduzimanja između nepovezanih pokazivača, –Završni-prazni prostor i -Početni-prazni prostor za označavanje nepotrebnog praznog prostora i –Zaštita zaglavlja za otkrivanje grešaka u zaštitama uključivanja zaglavlja.
Optimizacije i podrška
Među značajnim optimizacijama, Uključen je inkrementalni način kompajliranja za LTO (Optimizacija vremena povezivanja), dizajnirana da ubrza rekompilacije 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 ekstenzije su dodane u AArch8, podrška za nove procesore poput Apple M3, Cortex-X925 i NVIDIA Grace, te proširuje MinGW platformu. Generisanje koda za AMD Radeon GPU-ove je poboljšano sa Eksperimentalna podrška za nove GFX9, GFX10.3 i GFX11 serije. Za x86 arhitekturu, omogućena je podrška za AVX10.2 i nove AMX instrukcije, a podrška za Xeon Phi Knights je ukinuta.
Takođe, GCC 15.1 uvodi kompajler za COBOL (gcobol), s podrškom za x86-64 i AArch64 arhitekture, te ažuriranom implementacijom D jezika (verzija 2.111.0). Dodana je podrška za neoznačene cijele brojeve u Fortranu, a usvajanje OpenMP 5.0 do 6.0 je unaprijeđeno, uključujući poboljšanja interoperabilnosti i objedinjeno korištenje memorije na GPU-ima.