GCC 15.1 siirtyy C23-kieleen ja lisää C++-parannuksia, optimointeja ja paljon muuta.

gcc

Vuoden intensiivisen kehitystyön jälkeen uuden «GCC 15.1» -version julkaisu julkistettiin, joka on asemoitu ensimmäisenä vakaana versiona tämän suositun avoimen lähdekoodin kääntäjäpaketin uudessa 15.x-haarassa.

Tämä julkaisu ei ainoastaan ​​virallisesti julkaise uutta GCC 15 -sarjaa, vaan myös merkitsee GCC 16 -kehityksen valmistelujen alkua, sillä 16.0-haara on haarautunut rinnakkain ja luo pohjan seuraavalle merkittävälle julkaisulle, GCC 16.1:lle.

GCC 15.1 Tärkeimmät uudet ominaisuudet

Yksi merkittävimmistä muutoksista tässä uudessa versiossa on GCC 15.1 omaksuu C23-standardin oletuksena C-koodin kääntämisessä, käyttämällä -std=gnu23-vaihtoehtoa. Tämä päivitys korvaa aiemman oletusarvoisesti käytetyn standardin C17 (-std=gnu17) ja tuo mukanaan useita uuden standardin uusia ominaisuuksia. Niiden joukossa on vakio nullptr, tyyppi _BitInt(n) ja avainsanat bool, true ja false, mikä voi aiheuttaa ristiriitoja vanhan koodin olemassa olevien tunnisteiden kanssa.

Toinen GCC 15.1:n uusi ominaisuus on #embed-direktiivi binääridatan upottamiseksi, ja ominaisuuksia, kuten järjestämätön ja toistettavissa oleva, jotka tarjoavat paremman hallinnan suoritusjärjestykseen ja johdonmukaisten tulosten määrittämiseen. Lisäksi tulevan C2Y-standardin elementtejä on toteutettu, kuten if-ehtojen sisällä deklaroitavat muuttujat, case-lausekkeiden arvoalueet, imaginääriliitteet i ja j sekä tuki operaattoreille ++ ja — kompleksiluvuille.

C++:n parannukset ja tulevaisuuden C++26

C++-kielen tapauksessa uusi versio GCC 15.1 toteuttaa ominaisuuksia, joista keskustellaan C++26-standardia varten, kun uusia ominaisuuksia, kuten "friend"-operaattori, constexpr-operaattorin käyttö uuden operaattorin muunnelmien kanssa ja parannuksia jäsenneltyjen linkkien ja attribuuttien, kuten mustail-operaattorin taattua häntärekursiota varten, syntaksiin.

Myös C++23-tukea laajennetaan uusilla vientisääntöjen käytöllä, parannuksilla väliaikaisten objektien käsittelyyn ja kokeellisella toteutuksella std- ja std.compat-moduulit libstdc++:ssa. Lisäksi union-alustuksen turvallisuutta vahvistetaan ja koodin kääntämistä parannetaan tehokkaamman mallineiden hajautusjärjestelmän ansiosta.

Uusia varoituksia ja parannuksia staattisessa analyysissä

Järjestelmä Staattinen analyysi sai visuaalisen uudelleensuunnittelun joka korostaa ongelmia symbolien avulla, Vinkkejä C23:een siirtymiseen ja uusi libgdiagnostics-kirjasto mikä mahdollistaa diagnostiikkalogiikan uudelleenkäytön muissa projekteissa. Myös SARIF-muodossa olevien raporttien luomisen tuki on otettu käyttöön, mikä helpottaa integrointia nykyaikaisten koodianalyysityökalujen kanssa.

Klo Olemassa olevat varoitukset lisätään uusiin, kuten -Wanalyzer-määrittelemätön-käyttäytyminen-ptrdiff havaita vähennyslaskuja toisiinsa liittymättömien osoittimien välillä, –Wperäkkäinen välilyönti ja -Walkuperäinen välilyönti osoittaakseen tarpeetonta tyhjää tilaa ja –Wheader-guard havaitakseen virheitä otsikon sisällyttämissuojauksissa.

Optimoinnit ja tuki

Merkittävien optimointien joukossa Mukana on LTO:n inkrementaalinen käännöstila (Link-Time Optimization), joka on suunniteltu nopeuttamaan uudelleenkääntämisiä, kun muutokset ovat vähäisiä. Myös silmukkavektorointia on parannettu, jopa tapauksissa, joissa taulukoiden kokoa ei tiedetä käännösaikana, ja se nopeuttaa erittäin suurten tiedostojen kääntämistä.

Tukipuolella ARMv64-laajennuksia on lisätty AArch8:ään, tuki uusille suorittimille, kuten Apple M3:lle Cortex-X925 ja NVIDIA Grace, ja laajentaa MinGW-alustaa. AMD Radeon -näytönohjainten koodinluontia on vahvistettu Kokeellinen tuki uusille GFX9-, GFX10.3- ja GFX11-sarjoille. X86-arkkitehtuurissa AVX10.2:n ja uusien AMX-käskyjen tuki on käytössä, ja Xeon Phi Knightsin tuki on lopetettu.

Lisäksi, GCC 15.1 esittelee COBOL-kääntäjän (gcobol), tuki x86-64- ja AArch64-arkkitehtuureille sekä päivitetty D-kielen toteutus (versio 2.111.0). Fortranissa on lisätty tuki etumerkittömille kokonaisluvuille, ja OpenMP 5.0:n käyttöönottoa 6.0:aan on edistetty, mukaan lukien yhteentoimivuuden parannukset ja yhtenäinen muistin käyttö näytönohjaimissa.