GCC 11.1 er allerede frigivet, dette er dens vigtigste nyheder og ændringer

Efter et års udvikling, GCC 11.1 compiler suite ny version udgivet, den første betydningsfulde udgivelse i den nye GCC 11.x-filial. Under det nye skema til nummerering af version blev version 11.0 brugt under udviklingen, og kort før frigivelsen af ​​GCC 11.1 var en gren af ​​GCC 12.0 allerede blevet forkælet til at danne den næste store version af GCC 12.1.

GCC 11.1 skiller sig ud for overgangen til standard-fejlretningsfilformatet DWARF 5, standardinddragelsen af ​​C ++ 17-standarden ("-std = gnu ++ 17"), betydelige forbedringer i kompatibilitet med C ++ 20-standarden, eksperimentel understøttelse af C ++ 23, forbedringer relateret til den fremtidige standard for C-sproget (C2x), nye ydeevneoptimeringer.

GCC 11.1 Vigtigste nye funktioner

Standardtilstanden for C ++ - sproget ændres for at bruge C ++ 17-standardeni stedet for den tidligere foreslåede C ++ 14. Det er muligt at deaktivere den nye C ++ 17-opførsel selektivt, når man behandler skabeloner, der bruger andre skabeloner som parameter (-fno-new-ttp-matching).

Tilføjet support til hardwareacceleration af AddressSanitizer-værktøjet, som giver dig mulighed for at bestemme fakta om adgang til frigjorte hukommelsesområder, overskride grænserne for den tildelte buffer og nogle andre typer fejl, når du arbejder med hukommelse. I øjeblikket er hardwareacceleration kun tilgængelig for AArch64-arkitekturen og er fokuseret på brugen, når man kompilerer Linux-kernen.

En anden nyhed, der præsenteres, er optimeringer og forbedringer mellem procedurer, da et nyt IPA-modref-pass blev tilføjet (-fipa-modref) for at spore bivirkninger i funktionsopkald og forbedre analysens nøjagtighed. Udover også en forbedret implementering af IPA-ICF-passet (-fipa-icf), hvilket reducerer kompileringshukommelsesforbruget og øger antallet af samlede funktioner, for hvilke identiske kodeblokke flettes.

El profildrevet optimeringsmotor (PGO), forbedret tilstand "-fprofile-values" ved at holde styr på flere parametre for indirekte opkald.

også Fortsat implementering af OpenMP 5.0-standarden er fremhævet (Open Multi-Processing), hvor tilføjet indledende support til tildelingsdirektivet og evnen til at bruge ikke-ensartede sløjfer i OpenMP-builds. OMP_TARGET_OFFLOAD-miljøvariablen understøttes nu.

Implementeringen af ​​OpenACC 2.6 parallel programmeringsspecifikation tilvejebragt til sprogene C, C ++ og Fortran, der definerer værktøjer til aflæsning af operationer til GPU'er og specialiserede processorer som NVIDIA PTX, er blevet forbedret.

For sprogene i C-familien er en ny attribut "no_stack_protector" blevet implementeret, designet til at markere funktioner, for hvilke stakbeskyttelse ikke skal aktiveres ("-fstack-protector"). Attributten "malloc" er blevet udvidet med understøttelse af identifikation af par af opkald for at allokere og frigøre hukommelse, der bruges i den statiske parser til at detektere typiske hukommelsesfejl (hukommelseslækage, brug efter gratis, dobbeltopkald til fri funktion osv.) og advarsler om kompilatoren "-Wmismatched-dealloc", "-Wmismatched- new-delete" og " -Wfree-nonheap-object "rapporterer inkonsekvente deallocation- og deallocation-operationer.

Når der genereres fejlretningsoplysninger, bruges DWARF 5-formatet som standard, hvilket sammenlignet med tidligere versioner tillader generering af fejlretningsdata, der er 25% mere kompakte. Fuld DWARF 5 support kræver binutils mindst version 2.35.2.

Udvidede funktioner i ThreadSanitizer-tilstand (-fsanitize = tråd), da jae tilføjer support til alternative driftstider og miljøer, samt understøttelse af fejlfindingsværktøjet Kernel Concurrency Sanitizer (KCSAN) til dynamisk detektion af raceforhold inden for Linux-kernen. Tilføjede nye muligheder "–param tsan-distinkt-flygtig" og "–param tsan-instrument-func-entry-exit".

Vectorizer giver regnskab for alt funktionsindhold og yderligere behandlingsfunktioner forbundet med tidligere blokreferencer og skæringspunkter i kontrolflowdiagrammet (CFG).

Optimizer har evnen til at konvertere en række betingede operationer til et ændringsudtryk, hvor den samme variabel sammenlignes. I fremtiden kan ændringsudtrykket kodes ved hjælp af bit-testinstruktioner (for at kontrollere denne konvertering er indstillingen "-fbit-tests" tilføjet).

For C ++ er en del af de ændringer og innovationer, der er foreslået i C ++ 20-standarden, blevet implementeret, herunder de virtuelle funktioner "consteval virtual", pseudo-destroyere til afslutning af objekters livscyklus ved hjælp af enumklassen og beregning størrelsen på en matrix i udtrykket "ny".

Hvis du vil vide mere om det, kan du tjekke detaljerne i følgende link. 


Indholdet af artiklen overholder vores principper for redaktionel etik. Klik på for at rapportere en fejl her.

Vær den første til at kommentere

Efterlad din kommentar

Din e-mailadresse vil ikke blive offentliggjort. Obligatoriske felter er markeret med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Control SPAM, management af kommentarer.
  3. Legitimering: Dit samtykke
  4. Kommunikation af dataene: Dataene vil ikke blive kommunikeret til tredjemand, undtagen ved juridisk forpligtelse.
  5. Datalagring: Database hostet af Occentus Networks (EU)
  6. Rettigheder: Du kan til enhver tid begrænse, gendanne og slette dine oplysninger.