GCC 11.1 er allerede utgitt, dette er de viktigste nyhetene og endringene

Etter et års utvikling, GCC 11.1 kompilatorsuite ny versjon utgitt, den første viktige utgivelsen i den nye GCC 11.x-grenen. Under det nye versjonsnummereringsskjemaet ble versjon 11.0 brukt under utviklingen, og kort tid før utgivelsen av GCC 11.1 hadde en gren av GCC 12.0 allerede blitt gaffelt for å danne den neste store versjonen av GCC 12.1.

GCC 11.1 skiller seg ut for overgangen til standard feilsøkingsfilformat DWARF 5, standard inkludering av C ++ 17-standarden ("-std = gnu ++ 17"), betydelige forbedringer i kompatibilitet med C ++ 20-standarden, eksperimentell støtte for C ++ 23, forbedringer knyttet til den fremtidige standarden for C-språket (C2x), nye ytelsesoptimaliseringer.

GCC 11.1 Viktigste nye funksjoner

Standardmodus for C ++ språk endres for å bruke C ++ 17-standarden, i stedet for den tidligere foreslåtte C ++ 14. Det er mulig å deaktivere den nye C ++ 17-oppførselen selektivt når du behandler maler som bruker andre maler som parameter (-fno-new-ttp-matching).

Lagt til støtte for maskinvareakselerasjon av AddressSanitizer-verktøyet, som lar deg bestemme fakta for tilgang til frigjorte minneområder, overskride grensene for den tildelte bufferen, og noen andre typer feil når du arbeider med minne. Foreløpig er maskinvareakselerasjon bare tilgjengelig for AArch64-arkitekturen og fokuserer på bruken når den kompilerer Linux-kjernen.

En annen nyhet som presenteres er optimaliseringer og forbedringer mellom prosedyrer, ettersom et nytt IPA-modref-pass ble lagt til (-fipa-modref) for å spore bivirkninger i funksjonsanrop og forbedre analysenøyaktigheten. Foruten også en forbedret implementering av IPA-ICF-passet (-fipa-icf), som reduserer kompilering av minneforbruk og øker antall enhetlige funksjoner som identiske kodeblokker blir slått sammen.

El profilstyrt optimaliseringsmotor (PGO), forbedret "-fprofile-values" -modus ved å holde rede på flere parametere for indirekte samtaler.

Også Fortsatt implementering av OpenMP 5.0-standarden er uthevet (Open Multi-Processing), der lagt til første støtte for oppdragsdirektivet og muligheten til å bruke ikke-ensartede løkker i OpenMP bygger. OMP_TARGET_OFFLOAD-miljøvariabelen støttes nå.

Implementeringen av OpenACC 2.6 parallell programmeringsspesifikasjon gitt for språkene C, C ++ og Fortran, som definerer verktøy for å avlaste operasjoner til GPUer og spesialiserte prosessorer som NVIDIA PTX, er forbedret.

For språkene i C-familien er en ny attributt "no_stack_protector" implementert, designet for å merke funksjoner som stabelbeskyttelse ikke skal aktiveres for ("-fstack-protector"). "Malloc" -attributtet er utvidet med støtte for å identifisere par av samtaler for å tildele og frigjøre minne, som brukes i den statiske parseren for å oppdage typiske minnefeil (minnelekkasjer, bruk etter gratis, dobbeltkall til ledig funksjon, etc.) og kompilatoradvarsler "-Wmismatched-dealloc", "-Wmismatched- new-delete" og " -Wfree-nonheap-object "rapporterer inkonsekvente avtalen og avtalen.

Når du genererer feilsøkingsinformasjon, brukes DWARF 5-formatet som standard, som sammenlignet med tidligere versjoner tillater generering av feilsøkingsdata som er 25% mer kompakt. Full DWARF 5-støtte krever binutils minst versjon 2.35.2.

Forbedrede funksjoner i ThreadSanitizer-modus (-fsanitize = tråd), siden jae legger til støtte for alternative kjøretider og miljøer, i tillegg til støtte for feilsøkingsverktøyet Kernel Concurrency Sanitizer (KCSAN) for dynamisk å oppdage løpsforhold i Linux-kjernen. Nye alternativer "–param tsan-distinkt-flyktig" og "–param tsan-instrument-func-entry-exit" er lagt til.

Vectorizer gir regnskap for alt innholdet i funksjonen og tilleggsbehandling av evnene knyttet til kryssene og referanser til tidligere blokker i kontrollflytskjemaet (CFG).

Optimizer har muligheten til å konvertere en serie av betingede operasjoner til et endringsuttrykk der den samme variabelen sammenlignes. I fremtiden kan endringsuttrykket kodes ved hjelp av bit-testinstruksjoner (for å kontrollere denne konverteringen er alternativet "-fbit-tester" lagt til).

For C ++ har en del av endringene og innovasjonene som er foreslått i C ++ 20-standarden blitt implementert, inkludert de virtuelle funksjonene "consteval virtual", pseudo-destroyere for å avslutte objekters livssyklus, ved hjelp av enumklassen og beregne størrelsen på en matrise i uttrykket "ny".

Hvis du vil vite mer om det, kan du sjekke detaljene i følgende lenke. 


Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.