Na een jaar van intensieve ontwikkeling, de release van de nieuwe versie van «GCC 15.1» werd aangekondigd, die is gepositioneerd als de eerste stabiele versie binnen de nieuwe 15.x-branch van deze populaire open source compilersuite.
Met deze release wordt niet alleen de nieuwe GCC 15-serie officieel gelanceerd, maar ook het begin gemarkeerd van de voorbereidingen voor de ontwikkeling van GCC 16. De 16.0-branch is parallel hieraan geforkt en vormt de basis voor de volgende grote release, GCC 16.1.
GCC 15.1 Belangrijkste nieuwe functies
Een van de meest opvallende veranderingen in deze nieuwe versie is GCC 15.1 neemt de C23-standaard over als standaard voor het compileren van C-code, met behulp van de optie -std=gnu23. Deze update vervangt de vorige standaard, C17 (-std=gnu17), en introduceert een aantal nieuwe functies van de nieuwe standaard. Onder hen is de constante nullptr, het type _BitInt(n), en de sleutelwoorden bool, true en false, wat conflicten kan veroorzaken met bestaande identificatoren in oude code.
Een andere nieuwe functie die GCC 15.1 bevat, is de #embed-richtlijn om binaire gegevens in te sluiten, en kenmerken zoals niet-gesequentieerd en reproduceerbaar, die zorgen voor een grotere controle over de uitvoeringsvolgorde en het bepalen van consistente resultaten. Bovendien zijn elementen van de toekomstige C2Y-standaard geïmplementeerd, zoals variabelen die worden gedeclareerd binnen if-voorwaarden, waardebereiken in case-instructies, imaginaire achtervoegsels i en j en ondersteuning voor de operatoren ++ en — toegepast op complexe getallen.
Verbeteringen in C++ en de toekomst van C++26
In het geval van de C++-taal is de nieuwe versie van GCC 15.1 implementeert functies die worden besproken voor de C++26-standaard, naarmate er nieuwe functies worden geïntroduceerd, zoals de "vriend"-operator, het gebruik van constexpr met varianten van de nieuwe operator en verbeteringen in de syntaxis voor gestructureerde koppelingen en attributen, zoals musttail voor gegarandeerde staartrecursie.
C++23-ondersteuning is ook uitgebreid met nieuwe regels voor het gebruik van export, verbeteringen in de verwerking van tijdelijke objecten en een experimentele implementatie van de modules std en std.compat in libstdc++. Bovendien is de beveiliging voor union-initialisatie versterkt en is de codecompilatie verbeterd dankzij een efficiënter template-hashingsysteem.
Nieuwe waarschuwingen en verbeteringen in statische analyse
Het systeem Statische analyse kreeg een visueel nieuw ontwerp die problemen benadrukt door middel van symbolen, Tips voor migratie naar C23 en een nieuwe libgdiagnostics-bibliotheek waardoor diagnostische logica in andere projecten hergebruikt kan worden. Er is ook ondersteuning geïntroduceerd voor het genereren van rapporten in SARIF-formaat, waardoor integratie met moderne codeanalysetools wordt vergemakkelijkt.
bij Bestaande waarschuwingen worden toegevoegd aan nieuwe, als -Wanalyzer-undefined-behavior-ptrdiff om aftrekkingen tussen niet-gerelateerde aanwijzers te detecteren, –Wtrailing-whitespace en -Wleading-whitespace om onnodige witruimte aan te geven, en –Wheader-guard om fouten in header-opnamebeveiligingen te detecteren.
Optimalisaties en ondersteuning
Tot de opvallende optimalisaties behoren: Er is een incrementele compilatiemodus voor LTO inbegrepen (Link-Time Optimization), ontworpen om hercompilaties te versnellen wanneer de wijzigingen minimaal zijn. Ook lusvectorisatie is verbeterd, zelfs in gevallen waarbij de grootte van de arrays tijdens het compileren nog niet bekend is. Bovendien verhoogt het de snelheid bij het compileren van zeer grote bestanden.
Aan de ondersteuningszijde zijn ARMv64-extensies toegevoegd aan AArch8, ondersteuning voor nieuwe CPU's zoals Apple M3, Cortex-X925 en NVIDIA Grace en breidt het MinGW-platform uit. Codegeneratie voor AMD Radeon GPU's is versterkt met Experimentele ondersteuning voor nieuwe GFX9-, GFX10.3- en GFX11-series. Voor de x86-architectuur is ondersteuning voor AVX10.2 en nieuwe AMX-instructies ingeschakeld en is de ondersteuning voor Xeon Phi Knights stopgezet.
Bovendien heeft GCC 15.1 introduceert een compiler voor COBOL (gcobol), met ondersteuning voor x86-64 en AArch64 architecturen en een bijgewerkte implementatie van de D-taal (versie 2.111.0). Er is ondersteuning voor ongetekende gehele getallen in Fortran toegevoegd en de implementatie van OpenMP 5.0 naar 6.0 is versneld, met onder meer verbeteringen op het gebied van interoperabiliteit en uniform geheugengebruik op GPU's.