GCC 15.1 versija pereina prie C23 ir prideda C++ patobulinimų, optimizavimų ir dar daugiau.

GCC

Po metų intensyvaus vystymosi, buvo paskelbta apie naujos „GCC 15.1“ versijos išleidimą. kuri yra pirmoji stabili versija naujoje šio populiaraus atvirojo kodo kompiliatorių rinkinio 15.x šakoje.

Šis leidimas ne tik oficialiai pristato naująją GCC 15 seriją, bet ir žymi pasirengimo GCC 16 kūrimui pradžią, nes lygiagrečiai buvo sukurta 16.0 atšaka, kuri padės pamatus kitam svarbiam leidimui – GCC 16.1.

PĮKT 15.1 Pagrindinės naujos savybės

Vienas ryškiausių šios naujos versijos pakeitimų yra GCC 15.1 priima C23 standartą kaip numatytoji C kodo kompiliavimo funkcija, naudojant parinktį -std=gnu23. Šis atnaujinimas pakeičia ankstesnį pagal numatytuosius nustatymus naudotą standartą C17 (-std=gnu17) ir pristato keletą naujų naujojo standarto funkcijų. Tarp jų yra ir konstanta nullptr, tipas _BitInt(n) ir raktažodžiai bool, true ir false, o tai gali sukelti konfliktų su esamais identifikatoriais senajame kode.

Dar viena nauja GCC 15.1 funkcija yra #embed direktyva dvejetainių duomenų įterpimui, ir tokius atributus kaip nenuoseklumas ir atkartojamumas, kurie suteikia didesnę vykdymo tvarkos kontrolę ir nuoseklių rezultatų nustatymą. Be to, buvo įdiegti būsimo C2Y standarto elementai, tokie kaip kintamieji, deklaruojami „if“ sąlygose, reikšmių diapazonai atvejų sakiniuose, įsivaizduojamos priesagos i ir j bei operatorių ++ ir —, taikomų kompleksiniams skaičiams, palaikymas.

C++ patobulinimai ir būsimas C++26

C++ kalbos atveju, nauja versija GCC 15.1 įdiegia funkcijas, kurios šiuo metu aptariamos C++26 standarte, nes pristatomos naujos funkcijos, tokios kaip operatorius „draugas“, „constexpr“ naudojimas su naujojo operatoriaus variantais ir struktūrizuotų nuorodų bei atributų, pvz., „mustail“, sintaksės, skirtos garantuotai uodegos rekursijai, patobulinimai.

Taip pat išplėstas C++23 palaikymas su naujomis eksportavimo naudojimo taisyklėmis, patobulinimais tvarkant laikinus objektus ir eksperimentiniu std bei std.compat modulių įgyvendinimu libstdc++. Be to, sustiprinamas sąjungos inicijavimo saugumas ir patobulintas kodo kompiliavimas dėl efektyvesnės šablonų maišos sistemos.

Nauji įspėjimai ir statinės analizės patobulinimai

Sistema Statinė analizė gavo vizualinį atnaujinimą kuris problemas išryškina simboliais, Patarimai, kaip pereiti prie C23 ir nauja libgdiagnostics biblioteka kuri leidžia pakartotinai naudoti diagnostikos logiką kituose projektuose. Taip pat įdiegtas ataskaitų generavimo SARIF formatu palaikymas, palengvinantis integraciją su šiuolaikiniais kodo analizės įrankiais.

Tuo Esami įspėjimai pridedami prie naujų, kaip -Wanalyzer-neapibrėžtas-elgesys-ptrdiff aptikti atimtį tarp nesusijusių rodyklių, –Wgalinis tarpas ir -Wpriedinis tarpas nurodyti nereikalingus tarpus ir –Wheader-guard aptikti antraščių įtraukimo apsaugos klaidas.

Optimizavimas ir palaikymas

Tarp pastebimų optimizavimų, Įtrauktas LTO papildomas kompiliavimo režimas (ryšio laiko optimizavimas), skirtas pagreitinti pakartotinį kompiliavimą, kai pakeitimai yra minimalūs. Taip pat patobulinta ciklo vektorizacija, net tais atvejais, kai masyvų dydis kompiliavimo metu nežinomas, ir padidina labai didelių failų kompiliavimo greitį.

Kalbant apie palaikymą, prie AArch64 buvo pridėti ARMv8 plėtiniai. palaikymas naujiems procesoriams, tokiems kaip „Apple M3“, „Cortex-X925“ ir „NVIDIA Grace“, taip pat išplečia „MinGW“ platformą. AMD Radeon GPU kodo generavimas yra sustiprintas Eksperimentinis naujų GFX9, GFX10.3 ir GFX11 serijų palaikymas. X86 architektūrai įgalintas AVX10.2 ir naujų AMX instrukcijų palaikymas, o „Xeon Phi Knights“ palaikymas nutraukiamas.

Be to, GCC 15.1 pristato COBOL kompiliatorių (gcobol) su palaikymu x86-64 ir AArch64 architektūroms bei atnaujinta D kalbos versija (2.111.0 versija). Pridėtas neženklinių sveikųjų skaičių palaikymas „Fortran“ kalboje, o „OpenMP 5.0“ ir „6.0“ versijų pritaikymas buvo patobulintas, įskaitant sąveikumo patobulinimus ir suvienodintą atminties naudojimą GPU.