GCC 15.1 přechází na C23 a přidává vylepšení, optimalizace a další prvky v C++.

gcc

Po roce intenzivního vývoje, bylo oznámeno vydání nové verze «GCC 15.1», která je umístěna jako první stabilní verze v rámci nové větve 15.x této populární sady kompilátorů s otevřeným zdrojovým kódem.

Tato verze nejen oficiálně spouští novou řadu GCC 15, ale také znamená začátek příprav na vývoj GCC 16, jelikož větev 16.0 byla paralelně forkována a položí základy pro další hlavní verzi, GCC 16.1.

GCC 15.1 Hlavní nové funkce

Jednou z nejvýznamnějších změn v této nové verzi je GCC 15.1 přijímá standard C23 jako výchozí nastavení pro kompilaci kódu v jazyce C, pomocí volby -std=gnu23. Tato aktualizace nahrazuje předchozí standard používaný ve výchozím nastavení, C17 (-std=gnu17), a zavádí řadu nových funkcí nového standardu. Mezi nimi je i konstanta nullptr, typ _BitInt(n) a klíčová slova bool, true a false, což by mohlo způsobit konflikty se stávajícími identifikátory ve starším kódu.

Další novou funkcí, kterou GCC 15.1 obsahuje, je direktiva #embed pro vložení binárních dat, a atributy jako neuspořádanost a reprodukovatelnost, které poskytují větší kontrolu nad pořadím provádění a určením konzistentních výsledků. Dále byly implementovány prvky budoucího standardu C2Y, jako jsou proměnné deklarované v podmínkách if, rozsahy hodnot v příkazech case, imaginární přípony i a j a podpora operátorů ++ a — aplikovaných na komplexní čísla.

Vylepšení v C++ a budoucnost C++26

V případě jazyka C++ nová verze GCC 15.1 implementuje funkce, které jsou diskutovány pro standard C++26, s zaváděním nových funkcí, jako je operátor „friend“, použití constexpr s variantami nového operátoru a vylepšení syntaxe pro strukturované odkazy a atributy, jako je musttail pro zaručenou koncovou rekurzi.

Rozšířena je také podpora C++23 s novými pravidly pro používání exportu, vylepšeními v práci s dočasnými objekty a experimentální implementací modulů std a std.compat v knihovně libstdc++. Dále je posíleno zabezpečení inicializace sjednocení a vylepšena je kompilace kódu díky efektivnějšímu systému hashování šablon.

Nová varování a vylepšení ve statické analýze

Systém Statická analýza se dočkala vizuálního přepracování který zdůrazňuje problémy pomocí symbolů, Tipy pro migraci na C23 a novou knihovnu libgdiagnostics což umožňuje opětovné použití diagnostické logiky v jiných projektech. Je také zavedena podpora pro generování reportů ve formátu SARIF, což usnadňuje integraci s moderními nástroji pro analýzu kódu.

At Stávající varování se přidávají k novým., jako -Wanalyzer-undefined-behavior-ptrdiff detekovat odečítání mezi nesouvisejícími ukazateli, –Wtrailing-whitespace a -Wleading-whitespace pro označení zbytečných mezer a –Ochrana hlavy W k detekci chyb v ochraně proti zahrnutí záhlaví.

Optimalizace a podpora

Mezi pozoruhodné optimalizace patří Je zahrnut režim inkrementální kompilace pro LTO (optimalizace za provozu), navržená pro urychlení rekompilací, když jsou změny minimální. Také vektorizace smyček je vylepšena, a to i v případech, kdy velikost polí není v době kompilace známa, a zvyšuje rychlost kompilace velmi velkých souborů.

Co se týče podpory, do AArch64 byla přidána rozšíření ARMv8, podpora nových procesorů jako Apple M3, Cortex-X925 a NVIDIA Grace a rozšiřuje platformu MinGW. Generování kódu pro grafické karty AMD Radeon je vylepšeno o Experimentální podpora pro nové řady GFX9, GFX10.3 a GFX11. Pro architekturu x86 je povolena podpora instrukcí AVX10.2 a nových instrukcí AMX a podpora procesorů Xeon Phi Knights je ukončena.

Navíc, GCC 15.1 představuje kompilátor pro COBOL (gcobol) s podporou architektur x86-64 a AArch64 a aktualizovanou implementací jazyka D (verze 2.111.0). Byla přidána podpora pro nepodepsaná celá čísla ve Fortranu a bylo rozšířeno přijetí OpenMP 5.0 až 6.0, včetně vylepšení interoperability a sjednoceného využití paměti na GPU.