GCC 15.1 prechádza na C23 a pridáva vylepšenia, optimalizácie a ďalšie funkcie v jazyku C++.

gcc

Po roku intenzívneho vývoja, bolo oznámené vydanie novej verzie „GCC 15.1“, ktorá je umiestnená ako prvá stabilná verzia v rámci novej vetvy 15.x tohto populárneho balíka kompilátorov s otvoreným zdrojovým kódom.

Toto vydanie nielen oficiálne uvádza na trh novú sériu GCC 15, ale tiež predstavuje začiatok príprav na vývoj GCC 16, keďže vetva 16.0 bola paralelne rozdelená a položí základy pre ďalšie hlavné vydanie, GCC 16.1.

GCC 15.1 Hlavné nové funkcie

Jednou z najvýznamnejších zmien v tejto novej verzii je GCC 15.1 prijíma štandard C23 ako predvolené pre kompiláciu kódu C, pomocou voľby -std=gnu23. Táto aktualizácia nahrádza predchádzajúci štandard používaný ako predvolený, C17 (-std=gnu17), a zavádza množstvo nových funkcií nového štandardu. Medzi nimi je aj konštanta nullptr, typ _BitInt(n) a kľúčové slová bool, true a false, čo by mohlo spôsobiť konflikty s existujúcimi identifikátormi v zastaranom kóde.

Ďalšou novou funkciou, ktorú GCC 15.1 obsahuje, je Direktíva #embed na vloženie binárnych údajov, a atribúty ako nesekvencované a reprodukovateľné, ktoré poskytujú väčšiu kontrolu nad poradím vykonávania a určením konzistentných výsledkov. Okrem toho boli implementované prvky budúceho štandardu C2Y, ako napríklad premenné deklarované v podmienkach if, rozsahy hodnôt v príkazoch case, imaginárne prípony i a j a podpora operátorov ++ a — aplikovaných na komplexné čísla.

Vylepšenia v C++ a budúcnosť C++26

V prípade jazyka C++, nová verzia GCC 15.1 implementuje funkcie, o ktorých sa diskutuje v rámci štandardu C++26, so zavedením nových funkcií, ako napríklad operátor „friend“, použitie constexpr s variantmi nového operátora a vylepšenia syntaxe pre štruktúrované odkazy a atribúty, ako napríklad musttail pre garantovanú chvostovú rekurziu.

Rozšírená je aj podpora C++23 s novými pravidlami pre používanie exportu, vylepšeniami v práci s dočasnými objektmi a experimentálnou implementáciou modulov std a std.compat v knižnici libstdc++. Okrem toho je posilnená bezpečnosť inicializácie zjednotení a vďaka efektívnejšiemu systému hašovania šablón je vylepšená kompilácia kódu.

Nové upozornenia a vylepšenia v statickej analýze

Systém Statická analýza dostala vizuálny redizajn ktorý zdôrazňuje problémy prostredníctvom symbolov, Tipy na migráciu na C23 a novú knižnicu libgdiagnostics čo umožňuje opätovné použitie diagnostickej logiky v iných projektoch. Taktiež je zavedená podpora pre generovanie reportov vo formáte SARIF, čo uľahčuje integráciu s modernými nástrojmi na analýzu kódu.

na Existujúce upozornenia sa pridávajú k novým, ako -Wanalyzer-undefined-behavior-ptrdiff na detekciu odčítaní medzi nesúvisiacimi ukazovateľmi, –Wtrailing-whitespace a -Wleading-whitespace na označenie nepotrebných medzier a –Ochrana hlavičky na detekciu chýb v ochrane proti zahrnutiu hlavičiek.

Optimalizácie a podpora

Medzi pozoruhodné optimalizácie patrí Súčasťou je aj režim inkrementálnej kompilácie pre LTO (Optimalizácia času spojenia), navrhnutá na zrýchlenie rekompilácií, keď sú zmeny minimálne. Tiež vektorizácia slučky je vylepšená, a to aj v prípadoch, keď veľkosť polí nie je známa v čase kompilácie, a zvyšuje rýchlosť kompilácie veľmi veľkých súborov.

Čo sa týka podpory, do AArch64 boli pridané rozšírenia ARMv8, podpora pre nové procesory ako Apple M3, Cortex-X925 a NVIDIA Grace a rozširuje platformu MinGW. Generovanie kódu pre grafické procesory AMD Radeon je posilnené o... Experimentálna podpora pre nové série GFX9, GFX10.3 a GFX11. Pre architektúru x86 je povolená podpora pre AVX10.2 a nové inštrukcie AMX a podpora pre Xeon Phi Knights je ukončená.

Okrem toho, GCC 15.1 predstavuje kompilátor pre COBOL (gcobol) s podporou architektúr x86-64 a AArch64 a aktualizovanou implementáciou jazyka D (verzia 2.111.0). Bola pridaná podpora pre neznamienkové celé čísla vo Fortrane a bolo rozšírené o OpenMP 5.0 až 6.0 vrátane vylepšení interoperability a jednotného využitia pamäte na GPU.