GCC 11.1 har redan släppts, det här är dess viktigaste nyheter och förändringar

Efter ett års utveckling, GCC 11.1 kompilatorsvit ny version släppt, den första betydelsefulla utgåvan i den nya GCC 11.x-filialen. Enligt det nya numreringsschemat användes version 11.0 under utvecklingen, och strax före lanseringen av GCC 11.1 hade en gren av GCC 12.0 redan gafflats för att bilda nästa större version av GCC 12.1.

GCC 11.1 utmärker sig för övergången till standard-felsökningsformatet DWARF 5, standardinkluderingen av C ++ 17-standarden ("-std = gnu ++ 17"), betydande förbättringar i kompatibilitet med C ++ 20-standarden, experimentellt stöd för C ++ 23, förbättringar relaterade till den framtida standarden för C-språket (C2x), nya prestandaoptimeringar.

GCC 11.1 Huvudnyheter

Standardläget för C ++ -språket ändras för att använda C ++ 17-standarden, istället för den tidigare föreslagna C ++ 14. Det är möjligt att selektivt inaktivera det nya C ++ 17-beteendet vid bearbetning av mallar som använder andra mallar som en parameter (-fno-new-ttp-matching).

Lagt till stöd för hårdvaruacceleration i AddressSanitizer-verktyget, som låter dig bestämma fakta för åtkomst till frigjorda minnesområden, överskrida gränserna för den tilldelade bufferten och vissa andra typer av fel när du arbetar med minne. För närvarande är hårdvaruacceleration endast tillgänglig för AArch64-arkitekturen och är fokuserad på dess användning när man kompilerar Linux-kärnan.

En annan nyhet som presenteras är optimeringar och förbättringar mellan procedurer, eftersom ett nytt IPA-modref-pass lades till (-fipa-modref) för att spåra biverkningar i funktionssamtal och förbättra analysens noggrannhet. Förutom också en förbättrat genomförande av IPA-ICF-passet (-fipa-icf), vilket minskar kompileringen av minnesförbrukningen och ökar antalet enhetliga funktioner för vilka identiska kodblock blockeras.

El profilstyrd optimeringsmotor (PGO), förbättrat "-fprofile-values" -läge genom att hålla reda på fler parametrar för indirekta samtal.

också Fortsatt implementering av OpenMP 5.0-standarden är markerad (Open Multi-Processing), där lagt till initialt stöd för uppdragsdirektivet och förmågan att använda ojämna slingor i OpenMP-byggnader. Miljövariabel OMP_TARGET_OFFLOAD stöds nu.

Implementeringen av OpenACC 2.6 parallell programmeringsspecifikation som tillhandahålls för C-, C ++- och Fortran-språken, som definierar verktyg för att ladda ner operationer till GPU: er och specialprocessorer som NVIDIA PTX, har förbättrats.

För C-familjens språk har ett nytt attribut "no_stack_protector" implementerats, utformad för att markera funktioner för vilka stackskydd inte ska aktiveras ("-fstack-protector"). Attributet "malloc" har utökats med stöd för att identifiera par av samtal för att allokera och frigöra minne, som används i den statiska parsern för att upptäcka typiska minnesfel (minnesläckage, användning efter lediga, dubbla samtal till ledig funktion, etc.) och kompilatorvarningar "-Wmismatched-dealloc", "-Wmismatched- new-delete" och " -Wfree-nonheap-object "rapporterar inkonsekvent deallocation och deallocation-operationer.

När du genererar felsökningsinformation används DWARF 5-formatet som standard, vilket jämfört med tidigare versioner tillåter generering av felsökningsdata som är 25% mer kompakt. Fullt DWARF 5-stöd kräver binutils åtminstone version 2.35.2.

Förbättrade funktioner för ThreadSanitizer-läge (-fsanitize = tråd), eftersom jae lägger till stöd för alternativa driftstider och miljöer, samt stöd för felsökningsverktyget Kernel Concurrency Sanitizer (KCSAN) för att dynamiskt upptäcka rasförhållanden i Linux-kärnan. Lade till nya alternativ "–param tsan-distinkt-flyktig" och "–param tsan-instrument-func-entry-exit".

Vectorizer tillhandahåller redovisning av allt funktionsinnehåll och ytterligare bearbetningsfunktioner associerade med tidigare blockreferenser och korsningar i kontrollflödesschemat (CFG).

Optimeraren har förmågan att konvertera en serie villkorliga operationer till ett ändringsuttryck där samma variabel jämförs. I framtiden kan ändringsuttrycket kodas med bit-testinstruktioner (för att kontrollera denna konvertering har alternativet "-fbit-tests" lagts till).

För C ++ har en del av de förändringar och innovationer som föreslagits i C ++ 20-standarden implementerats, inklusive de virtuella funktionerna "consteval virtual", pseudo-förstörare för att avsluta objekts livscykel, med enumklassen och beräkna storleken på en matris i uttrycket "ny".

Om du vill veta mer om detkan du kolla in detaljerna följande länk. 


Innehållet i artikeln följer våra principer om redaktionell etik. Klicka på för att rapportera ett fel här.

Bli först att kommentera

Lämna din kommentar

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

*

*

  1. Ansvarig för uppgifterna: Miguel Ángel Gatón
  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.