GCC 11.1 a fost deja lansat, acestea sunt cele mai importante știri și modificări ale sale

După un an de dezvoltare, a fost lansată noua versiune a suitei de compilare GCC 11.1, prima lansare semnificativă din noua ramură GCC 11.x. Conform noii scheme de numerotare a versiunilor, versiunea 11.0 a fost folosită în timpul dezvoltării și, cu puțin timp înainte de lansarea GCC 11.1, o ramură a GCC 12.0 fusese deja bifurcată pentru a forma următoarea versiune majoră a GCC 12.1.

GCC 11.1 remarcabil pentru tranziția la formatul implicit de fișier de depanare DWARF 5, includerea implicită a standardului C++17 ("-std=gnu++17"), îmbunătățiri semnificative ale suportului pentru standardul C++20, suport experimental pentru C++23, îmbunătățiri legate de viitorul C++ 2 de limbaj C standard (CXNUMXx), noi optimizări de performanță.

GCC 11.1 Principalele caracteristici noi

Modul implicit pentru limbajul C++ este modificat pentru a utiliza standardul C++ 17, în loc de C++14 propus anterior. Este posibil să dezactivați selectiv noul comportament C++17 atunci când procesați șabloane care folosesc alte șabloane ca parametru (-fno-new-ttp-matching).

S-a adăugat suport pentru accelerarea hardware din instrumentul AddressSanitizer, care vă permite să determinați faptele de accesare a zonelor de memorie eliberate, depășirea limitelor buffer-ului alocat și alte tipuri de erori atunci când lucrați cu memorie. Accelerarea hardware este în prezent disponibilă numai pentru arhitectura AArch64 și se concentrează pe utilizarea acesteia la compilarea nucleului Linux.

O altă noutate care este prezentată este optimizări și îmbunătățiri între proceduri, deoarece a fost adăugat un nou permis IPA-modref (-fipa-modref) pentru a urmări efectele secundare în apelurile de funcții și pentru a îmbunătăți acuratețea analizei. Pe lângă, de asemenea, a implementare îmbunătățită a permisului IPA-ICF (-fipa-icf), care reduce consumul de memorie de compilare și crește numărul de funcții unificate pentru care sunt îmbinate blocuri identice de cod.

El motor de optimizare ghidat de profil (PGO), modul „-fprofile-values” îmbunătățit ținând evidența mai multor parametri pentru apelurile indirecte.

de asemenea iese în evidență implementarea continuă a standardului OpenMP 5.0 (Open Multi-Processing), în care a adăugat suport inițial pentru politica de atribuire și capacitatea de a utiliza bucle neuniforme în versiunile OpenMP. Variabila de mediu OMP_TARGET_OFFLOAD este acum acceptată.

Implementarea îmbunătățită a specificației de programare paralelă OpenACC 2.6 furnizată pentru limbajele C, C++ și Fortran, care definește instrumente pentru descărcarea operațiunilor către GPU-uri și procesoare specializate, cum ar fi NVIDIA PTX.

Pentru limbajele familiei C, a fost implementat un nou atribut „no_stack_protector”, conceput pentru a semnaliza funcțiile pentru care protecția stivei nu ar trebui să fie activată ("-fstack-protector"). Atributul „malloc” a fost extins cu suport pentru identificarea perechilor de apeluri pentru alocarea și eliberarea memoriei, care este folosit în analizorul static pentru a detecta erori tipice de memorie (scăpări de memorie, utilizare după liber, apeluri duble la funcția gratuită etc.) și avertismentele compilatorului „-Wmismatched-dealloc”, „-Wmismatched- new-delete” și „-Wfree-nonheap-object” raportează operațiuni inconsecvente de dezamare și dezalocare.

La generarea informațiilor de depanare, se folosește implicit formatul DWARF 5, care, în comparație cu versiunile anterioare, permite generarea de date de depanare cu 25% mai compacte. Suportul complet DWARF 5 necesită binutils cel puțin versiunea 2.35.2.

Capacități îmbunătățite ale modului ThreadSanitizer (-fsanitize = fir), atunci dași adaugă suport pentru runtime și medii alternative, precum și suport pentru instrumentul de depanare Kernel Concurrency Sanitizer (KCSAN) pentru a detecta dinamic condițiile de cursă în nucleul Linux. S-au adăugat noi opțiuni „–param tsan-distinguish-volatile” și „–param tsan-instrument-func-entry-exit”.

Vectorizatorul furnizează contabilizarea întregului conținut al funcției și capabilități suplimentare de procesare asociate cu intersecțiile și referințele la blocurile anterioare din graficul fluxului de control (CFG).

Optimizatorul are capacitatea de a converti o serie de operații condiționate într-o expresie de modificare, în care este comparată aceeași variabilă. În viitor, expresia de comutare poate fi codificată folosind instrucțiuni de testare a biților (pentru a controla o astfel de conversie, a fost adăugată opțiunea „-fbit-tests”).

Pentru C++, au fost implementate o parte din modificările și inovațiile propuse în standardul C++ 20, inclusiv funcții virtuale „virtual consteval”, pseudo-distructori pentru terminarea ciclului de viață al obiectelor, folosind clasa enum și calcularea dimensiunii unui tablou în expresia „nou”.

Dacă doriți să aflați mai multe despre asta, puteți verifica detaliile în următorul link. 


Lasă comentariul tău

Adresa ta de email nu va fi publicată. Câmpurile obligatorii sunt marcate cu *

*

*

  1. Responsabil pentru date: Miguel Ángel Gatón
  2. Scopul datelor: Control SPAM, gestionarea comentariilor.
  3. Legitimare: consimțământul dvs.
  4. Comunicarea datelor: datele nu vor fi comunicate terților decât prin obligație legală.
  5. Stocarea datelor: bază de date găzduită de Occentus Networks (UE)
  6. Drepturi: în orice moment vă puteți limita, recupera și șterge informațiile.