GCC 15.1 face saltul la C23 și adaugă îmbunătățiri, optimizări și multe altele pentru C++.

gcc

După un an de dezvoltare intensă, a fost anunțată lansarea noii versiuni a «GCC 15.1», care este poziționată ca prima versiune stabilă în cadrul noii ramuri 15.x a acestei populare suite de compilatoare open source.

Această lansare nu numai că lansează oficial noua serie GCC 15, ci marchează și începutul pregătirilor pentru dezvoltarea GCC 16, deoarece ramura 16.0 a fost bifurcată în paralel și va pune bazele următoarei versiuni majore, GCC 16.1.

GCC 15.1 Principalele caracteristici noi

Una dintre cele mai notabile schimbări din această nouă versiune este că GCC 15.1 adoptă standardul C23 ca implicit pentru compilarea codului C, folosind opțiunea -std=gnu23. Această actualizare înlocuiește standardul anterior utilizat în mod implicit, C17 (-std=gnu17), și introduce o serie de caracteristici noi ale noului standard. Printre acestea se numără constanta nullptr, tipul _BitInt(n) și cuvintele cheie bool, true și false, ceea ce ar putea cauza conflicte cu identificatorii existenți din codul vechi.

O altă caracteristică nouă încorporată de GCC 15.1 este Directiva #embed pentru încorporarea datelor binare, și atribute precum nesecvențiale și reproductibile, care oferă un control mai mare asupra ordinii de execuție și determinarea unor rezultate consistente. În plus, au fost implementate elemente ale viitorului standard C2Y, cum ar fi variabile declarate în condițiile if, intervale de valori în instrucțiunile case, sufixe imaginare i și j și suport pentru operatorii ++ și — aplicați numerelor complexe.

Îmbunătățiri în C++ și viitorul C++ 26

În cazul limbajului C++, noua versiune a GCC 15.1 implementează caracteristici care sunt discutate pentru standardul C++26, pe măsură ce sunt introduse noi caracteristici, cum ar fi operatorul „friend”, utilizarea lui constexpr cu variante ale operatorului new și îmbunătățiri ale sintaxei pentru legături structurate și atribute, cum ar fi musttail pentru recursivitate garantată la coadă.

Suportul C++23 este, de asemenea, extins cu noi reguli pentru utilizarea exportului, îmbunătățiri ale gestionării obiectelor temporare și o implementare experimentală a modulelor std și std.compat în libstdc++. În plus, securitatea este consolidată pentru inițializarea uniunii, iar compilarea codului este îmbunătățită datorită unui sistem de hashing al șabloanelor mai eficient.

Noi avertismente și îmbunătățiri în analiza statică

Sistemul de Analiza statică a primit o reproiectare vizuală care evidențiază problemele prin simboluri, Sfaturi pentru migrarea la C23 și o nouă bibliotecă libgdiagnostics ceea ce permite reutilizarea logicii de diagnosticare în alte proiecte. De asemenea, este introdus suport pentru generarea de rapoarte în format SARIF, facilitând integrarea cu instrumente moderne de analiză a codului.

la Avertismentele existente sunt adăugate la cele noi, ca -Analizator-comportament-nedefinit-ptrdiff pentru a detecta scăderile dintre pointeri fără legătură, –Wspații albe la final și -Wspații albe la început pentru a indica spații albe inutile și –Apărătoare de wheader pentru a detecta erori în protecțiile de includere a antetului.

Optimizări și asistență

Printre optimizările notabile, Este inclus un mod de compilare incrementală pentru LTO (Link-Time Optimization), conceput pentru a accelera recompilările atunci când modificările sunt minime. Asemenea vectorizarea buclelor este îmbunătățită, chiar și în cazurile în care dimensiunea tablourilor nu este cunoscută la momentul compilării și crește viteza de compilare a fișierelor foarte mari.

În ceea ce privește suportul, extensiile ARMv64 au fost adăugate la AArch8, suport pentru procesoare noi precum Apple M3, Cortex-X925 și NVIDIA Grace și extinde platforma MinGW. Generarea de cod pentru plăcile grafice AMD Radeon este îmbunătățită cu Suport experimental pentru noile serii GFX9, GFX10.3 și GFX11. Pentru arhitectura x86, este activat suportul pentru AVX10.2 și noile instrucțiuni AMX, iar suportul pentru Xeon Phi Knights este întrerupt.

În plus, GCC 15.1 introduce un compilator pentru COBOL (gcobol), cu suport pentru arhitecturile x86-64 și AArch64 și o implementare actualizată a limbajului D (versiunea 2.111.0). A fost adăugat suport pentru numere întregi fără semn în Fortran, iar adoptarea OpenMP 5.0 până la 6.0 a fost avansată, inclusiv îmbunătățiri ale interoperabilității și utilizarea unificată a memoriei pe GPU-uri.