Pärast aastast intensiivset arengut Teatati uue versiooni «GCC 15.1» ilmumisest, mis on positsioneeritud selle populaarse avatud lähtekoodiga kompilaatorikomplekti uue 15.x haru esimese stabiilse versioonina.
See väljalase mitte ainult ei käivita ametlikult uut GCC 15 seeriat, vaid tähistab ka GCC 16 arenduse ettevalmistuste algust, kuna 16.0 haru on paralleelselt eraldatud ja loob aluse järgmisele suurele väljaandele, GCC 16.1.
GCC 15.1 peamised uued funktsioonid
Üks tähelepanuväärsemaid muudatusi selles uues versioonis on see, et GCC 15.1 võtab omaks C23 standardi C-koodi kompileerimisel vaikimisi kasutades valikut -std=gnu23. See värskendus asendab eelmise vaikimisi kasutatava standardi C17 (-std=gnu17) ja tutvustab uue standardi mitmeid uusi funktsioone. Nende hulgas on ka konstant nullptr, tüüp _BitInt(n) ja märksõnad bool, true ja false, mis võib põhjustada konflikte olemasolevate identifikaatoritega pärandkoodis.
Teine uus funktsioon, mille GCC 15.1 sisaldab, on #embed direktiiv binaarandmete manustamiseks, ja atribuudid nagu järjestuseta ja reprodutseeritav, mis pakuvad suuremat kontrolli teostusjärjekorra ja järjepidevate tulemuste määramise üle. Lisaks on rakendatud tulevase C2Y standardi elemente, näiteks if-tingimuste sees deklareeritud muutujad, case-lausetes väärtusvahemikud, imaginaarsed sufiksid i ja j ning operaatorite ++ ja — tugi kompleksarvudele.
C++ täiustused ja tulevane C++26
C++ keele puhul on uus versioon GCC 15.1 rakendab funktsioone, mida arutatakse C++26 standardi jaoks, kuna lisanduvad uued funktsioonid, näiteks operaator "sõber", constexpr'i kasutamine uue operaatori variantidega ning struktureeritud linkide ja atribuutide süntaksi täiustused, näiteks garanteeritud saba rekursiooni jaoks mõeldud mustail.
Samuti laiendatakse C++23 tuge uute ekspordi reeglitega, ajutiste objektide käsitlemise täiustustega ning libstdc++ moodulite std ja std.compat eksperimentaalse rakendamisega. Lisaks on tugevdatud turvalisust uniooni initsialiseerimisel ja tänu tõhusamale mallide räsimise süsteemile on parandatud koodi kompileerimist.
Uued hoiatused ja täiustused staatilises analüüsis
Süsteem Staatiline analüüs sai visuaalse ümberkujundamise mis toob probleeme esile sümbolite abil, Näpunäited C23-le migreerimiseks ja uus libgdiagnostics teek mis võimaldab diagnostilise loogika taaskasutamist teistes projektides. Samuti on lisatud tugi SARIF-vormingus aruannete genereerimiseks, mis hõlbustab integratsiooni kaasaegsete koodianalüüsi tööriistadega.
Kell Olemasolevad hoiatused lisatakse uutele, nagu -Wanalyzer-undefined-behavior-ptrdiff lahutamiste tuvastamiseks omavahel mitteseotud pointerite vahel, –Lõpptühik ja algustühik ebavajalike tühikute märkimiseks ja –Wheader-guard päise kaasamise kaitse vigade tuvastamiseks.
Optimeerimised ja tugi
Märkimisväärsete optimeerimiste hulgas on LTO jaoks on kaasas inkrementaalne kompileerimisrežiim (Link-Time Optimization), mis on loodud kiirendama uuesti kompileerimist minimaalsete muudatuste korral. Samuti silmusvektoriseerimist on täiustatud, isegi juhtudel, kui massiivide suurus pole kompileerimise ajal teada, ning suurendab väga suurte failide kompileerimise kiirust.
Toetuse poole pealt on AArch64-le lisatud ARMv8 laiendused, tugi uutele protsessoritele nagu Apple M3, Cortex-X925 ja NVIDIA Grace ning laiendab MinGW platvormi. AMD Radeoni graafikakaartide koodi genereerimist on tugevdatud Uute GFX9, GFX10.3 ja GFX11 seeriate katseline tugi. X86 arhitektuuri puhul on lubatud AVX10.2 ja uute AMX käskude tugi ning Xeon Phi Knightsi tugi lõpetatakse.
Lisaks GCC 15.1 tutvustab COBOL-i kompilaatorit (gcobol), mis toetab x86-64 ja AArch64 arhitektuure ning D-keele uuendatud implementatsiooni (versioon 2.111.0). Fortranis on lisatud tugi märkimata täisarvudele ning OpenMP 5.0 versioonilt 6.0 versioonile üleminekut on edendatud, sealhulgas on täiustatud koostalitlusvõimet ja ühtlustatud mälukasutust graafikaprotsessoritel.