GCC 11.1 je već objavljen, ovo su njegove najvažnije vijesti i promjene

Nakon godinu dana razvoja, Objavljena nova verzija kompajlera GCC 11.1, prvo značajno izdanje u novoj grani GCC 11.x. Prema novoj shemi numeriranja verzija, verzija 11.0 korištena je tijekom razvoja, a nedugo prije izlaska GCC 11.1, grana GCC 12.0 već je bila račvasta da formira sljedeću glavnu verziju GCC 12.1.

GCC 11.1 izdvaja se za prelazak na zadani format datoteke za otklanjanje pogrešaka DWARF 5, zadano uključivanje C ++ 17 standarda ("-std = gnu ++ 17"), značajna poboljšanja u kompatibilnosti sa C ++ 20 standardom, eksperimentalna podrška za C ++ 23, poboljšanja vezana za budući standard jezik C (C2x), nove optimizacije performansi.

GCC 11.1 Glavne nove karakteristike

Zadani način rada za jezik C ++ promijenjen je kako bi se koristio standard C ++ 17, umjesto prethodno predloženog C ++ 14. Moguće je selektivno onemogućiti novo ponašanje C ++ 17 prilikom obrade predložaka koji koriste druge predloške kao parametar (-fno-new-ttp-matching).

Dodata podrška za hardversko ubrzanje alata AddressSanitizer, koji vam omogućava utvrđivanje činjenica pristupa oslobođenim područjima memorije, prekoračenja ograničenja dodijeljenog međuspremnika i nekih drugih vrsta grešaka pri radu s memorijom. Trenutno je hardversko ubrzanje dostupno samo za AArch64 arhitekturu i fokusirano je na njegovu upotrebu prilikom kompajliranja Linux jezgre.

Još jedna novost koja se predstavlja su optimizacije i poboljšanja između procedura, jer je dodana nova IPA-modref propusnica (-fipa-modref) za praćenje nuspojava u pozivima funkcija i poboljšanje preciznosti analize. Osim toga a poboljšana primjena IPA-ICF propusnice (-fipa-icf), koji smanjuje potrošnju memorije kompilacije i povećava broj objedinjenih funkcija za koje se spajaju identični blokovi koda.

El mehanizam za optimizaciju vođen profilom (PGO), poboljšani način rada "-fprofile-values" praćenjem više parametara za indirektne pozive.

Takođe Istaknuta je kontinuirana primjena OpenMP 5.0 standarda (Otvorena višestruka obrada), u kojoj dodana početna podrška za direktivu o dodjeli i mogućnost korištenja nejednoličnih petlji u OpenMP gradnjama. Sada je podržana varijabla okoline OMP_TARGET_OFFLOAD.

Poboljšana je implementacija specifikacije paralelnog programiranja OpenACC 2.6 predviđena za jezike C, C ++ i Fortran, koja definira alate za istovar operacija na GPU-ove i specijalizirane procesore poput NVIDIA PTX.

Za jezike porodice C, implementiran je novi atribut "no_stack_protector", dizajniran da označi funkcije za koje zaštita steka ne bi trebala biti omogućena ("-fstack-protector"). Atribut "malloc" proširen je podrškom za identificiranje parova poziva za dodjelu i oslobađanje memorije, koji se koristi u statičkom raščlanjivaču za otkrivanje tipičnih grešaka u memoriji (curenje memorije, upotreba nakon besplatnog, dvostruki pozivi na besplatnu funkciju, itd.) i upozorenja kompajlera "-Wmismatched-dealloc", "-Wmismatched- new-delete" i " -Wfree-nonheap-object "izvještavanje o nedosljednom preusmjeravanju i operacijama razmještanja.

Kada se generiraju informacije o otklanjanju pogrešaka, prema zadanim postavkama koristi se format DWARF 5, koji u usporedbi s prethodnim verzijama omogućava generiranje podataka za otklanjanje pogrešaka koji su za 25% kompaktniji. Potpuna podrška za DWARF 5 zahtijeva binutils najmanje verzije 2.35.2.

Poboljšane mogućnosti načina rada ThreadSanitizer (-fsanitize = nit), jer daDodaje podršku za alternativna vremena izvođenja i okruženja, kao i podrška za alat za ispravljanje pogrešaka Kernel Concurrency Sanitizer (KCSAN) za dinamičko otkrivanje trkačkih uvjeta unutar Linux jezgre. Dodane su nove opcije "–param tsan-distinct-volatile" i "–param tsan-instrument-func-entry-exit".

Vektorizator omogućava računovodstvo za sav sadržaj funkcije i dodatne mogućnosti obrade povezane s prethodnim referencama blokova i presjecima u dijagramu tijeka upravljanja (CFG).

Optimizator ima mogućnost pretvoriti niz uvjetnih operacija u izraz promjene u kojem se uspoređuje ista varijabla. U budućnosti se izraz promjene može kodirati pomoću uputa za testiranje bitova (za kontrolu ove pretvorbe dodana je opcija "-fbit-tests").

Za C ++ je implementiran dio promjena i inovacija predloženih u standardu C ++ 20, uključujući virtualne funkcije "consteval virtual", pseudo-razarače za završavanje životnog ciklusa objekata, koristeći klasu enum i izračunavanje veličina niza u izrazu "novo".

Ako želite znati više o tome, detalje možete provjeriti u sljedeći link. 


Ostavite komentar

Vaša e-mail adresa neće biti objavljena. Obavezna polja su označena sa *

*

*

  1. Za podatke odgovoran: Miguel Ángel Gatón
  2. Svrha podataka: Kontrola neželjene pošte, upravljanje komentarima.
  3. Legitimacija: Vaš pristanak
  4. Komunikacija podataka: Podaci se neće dostavljati trećim stranama, osim po zakonskoj obavezi.
  5. Pohrana podataka: Baza podataka koju hostuje Occentus Networks (EU)
  6. Prava: U bilo kojem trenutku možete ograničiti, oporaviti i izbrisati svoje podatke.