GCC 12.1 har redan släppts, vet dess nyheter och dess 35-årsjubileum

GNU GCC-logotyp

Lanseringen av den nya versionen av kompilatorn GCC (GNU Compiler Collection) 12.1 har redan släppts och som med alla större utgåvor av GCC kommer den här utgåvan att ge många tillägg, förbättringar, buggfixar och nya funktioner, plus denna månad (23 maj) kommer projektet att fira 35 år sedan bildandet av den första utgåvan.

GCC 12 är redan systemkompilatorn för Fedora 36, ​​och GCC 12 kommer också att vara tillgänglig på Red Hat Enterprise Linux i Red Hat Developer Toolset (version 7) eller Red Hat GCC Toolset (version 8 och 9).

GCC-utvecklarna är stolta över att kunna tillkännage ännu en stor version av GCC, 12.1.

I år firar vi 35-årsdagen av den första betaversionen av GCC
Och den här månaden kommer vi att fira 35 år sedan lanseringen av GCC 1.0!

Den här utgåvan tar bort stödet för STABS-felsökningsformatet och
introducerar stöd för CTF-felsökningsformatet [1]. C och C++
gränssnitt fortsätter att utvecklas med utökat stöd för funktioner
i de kommande C2X- och C++23-standarderna och C++ Standard Library
förbättrar stödet för de experimentella delarna av C++20 och C++23.
Fortran-gränssnittet är nu helt kompatibelt med TS 29113 för interoperabilitet med C.

Vad är nytt i GCC 12.1?

I den här nya versionen Flera förslag har genomförts, till exempel för språk C och C++, tillagda en inbyggd funktion __builtin_dynamic_object_size för att bestämma storleken på ett objekt, kompatibel med en liknande funktion av Clang.

Lagt till stöd för "unavailable"-attributet för C- och C++-språken (Du kan till exempel markera funktioner som kommer att resultera i ett fel när de används), samt lagt till stöd för förbehandlingsdirektiven "#elifdef" och "#elifndef" för språken C och C++.

Det noteras också att "-Wbidi-chars"-flagga för att varna om UTF-8-tecken missbrukas, ändra den dubbelriktade textvisningsordningen, samt flaggan "-Warray-compare" för att utfärda en varning när man försöker jämföra två operander som hänvisar till arrayer.

Dessutom har iImplementering av OpenMP 5.0 och 5.1 standarder (Open Multi-Processing), som definierar API:er och metoder för att tillämpa parallella programmeringsmetoder på flerkärniga och hybridsystem (CPU + GPU / DSP) med delat minne och vektoriseringsenheter (SIMD), fortsatte.

Även förbättrad implementering av OpenACC 2.6 parallell programmeringsspecifikation, definiera sätten att ladda ner operationer på GPU:er och specialiserade processorer som NVIDIA PTX, och lägga till stöd för Intel AVX512-FP16 utökade instruktioner och typen _Float16 till x86 kodgenereringsbackend.

Fortran front-end ger fullt stöd för TS 29113-specifikationen, som beskriver möjligheterna att säkerställa portabilitet mellan Fortran och C-kod.

Utfasat stöd för "STABS"-formatet för felsökningsinformation som skapades på 1980-talet.

Lade till stöd för tillägget __builtin_shufflevector(vec1, vec2, index1, index2, …) som tidigare lagts till i Clang, vilket ger ett enda anrop för att utföra vanliga vektorshuffle- och shuffleoperationer.

När du använder optimeringsnivån "-O2" är vektorisering aktiverad som standard (lägena -ftree-vectorize och -fvect-cost-model=very-cheap är aktiverade). Den "mycket billiga" modellen tillåter vektorisering endast om vektorkod helt kan ersätta vektoriserbar skalär kod.

Lade till läge "-ftrivial-auto-var-init". för att möjliggöra explicit variabelinitiering på stacken för att spåra problem och blockera sårbarheter i samband med användningen av oinitierade variabler.

Lade till implementering av C-funktioner inbyggda i kompilatorn (Intrinsics) för atomladdning och datalagring i minnet, baserat på användningen av utökade ARM-instruktioner (ls64). Lade till stöd för att påskynda funktionerna memcpy, memmove och memset med ARM-mopoption-tillägget.

Lagt till ett nytt verifieringsläge "-fsanitize=shadow-call-stack" ( ShadowCallStack ), som för närvarande endast är tillgänglig för AArch64-arkitekturen och fungerar vid kompilering av kod med alternativet "-fixed-r18". Läget ger skydd mot omskrivning av funktionens returadress i händelse av ett stackbuffertspill. Kärnan i skyddet är att spara returadressen i en separat "skugg"-stack efter överföringen av kontroll till funktionen och att hämta denna adress innan funktionen avslutas.

Fuente: https://gcc.gnu.org/pipermail


Lämna din kommentar

Din e-postadress kommer inte att publiceras. Obligatoriska fält är markerade med *

*

*

  1. Ansvarig för data: AB Internet Networks 2008 SL
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.