GCC 11.1 ja va ser alliberat, aquestes són les seves novetats i canvis mes importants

Després d'un any de desenvolupament, es va llançar la nova versió de la suite de compiladors GCC 11.1, La primera versió significativa en la nova branca GCC 11.x. Sota el nou esquema de numeració de versions, la versió 11.0 es va usar durant el desenvolupament, i poc abans de el llançament de GCC 11.1, ja s'havia bifurcat una branca de GCC 12.0 per formar la propera versió principal de GCC 12.1.

GCC 11.1 destaca per la transició a el format d'arxiu de depuració per defecte DWARF maig, La inclusió per defecte de l'estàndard C ++ 17 ( «-std = gnu ++ 17»), millores significatives en la compatibilitat amb l'estàndard C ++ 20, suport experimental per a C ++ 23, millores relacionades amb el futur estàndard de l' llenguatge C (C2x), noves optimitzacions de rendiment.

Principals novetats de GCC 11.1

La manera per omissió per al llenguatge C ++ es canvia per utilitzar l'estàndard C ++ 17, En lloc de el C ++ 14 proposat anteriorment. És possible desactivar selectivament el nou comportament de C ++ 17 a l'processar plantilles que fan servir altres plantilles com a paràmetre (-fno-new-ttp-matching).

Es va agregar suport per l'acceleració de maquinari de l'eina AddressSanitizer, que permet determinar els fets d'accedir a àrees de memòria alliberades, excedir els límits de la memòria intermèdia assignat i alguns altres tipus d'errors a l'treballar amb memòria. Actualment, l'acceleració de maquinari només està disponible per a l'arquitectura AArch64 i se centra en el seu ús a l'compilar el nucli de Linux.

Una altra novetat que es presenta són les optimitzacions i millorades entre procediments, ja que es va agregar un nou passi IPA-modref (-Fipa-modref) per realitzar un seguiment dels efectes secundaris en les crides a funcions i millorar la precisió de l'anàlisi. A més de també una implementació millorada de la passada IPA-ICF (-Fipa-icf), que redueix el consum de memòria de compilació i augmenta el nombre de funcions unificades per a les que es fusionen blocs idèntics de codi.

El motor d'optimització guiada per perfils (PGO), es va millorar la manera «-fprofile-values» a l'realitzar un seguiment de més paràmetres per a trucades indirectes.

També es destaca la implementació contínua de l'estàndard OpenMP 5.0 (Open Multi-Processing), en la qual es va agregar suport inicial per a la norma d'assignació i la capacitat d'usar bucles no uniformes en construccions OpenMP. La variable d'entorn OMP_TARGET_OFFLOAD ara és compatible.

S'ha millorat la implementació de l'especificació de programació paral·lela OpenACC 2.6 proporcionada per als llenguatges C, C ++ i Fortran, que defineix eines per descarregar operacions a GPU i processadors especialitzats com NVIDIA PTX.

Per als llenguatges de la família C, s'ha implementat un nou atribut «no_stack_protector», dissenyat per a marcar funcions per a les que no s'ha de activar la protecció de pila ( «-fstack-protector»). L'atribut «malloc» s'ha ampliat amb suport per a identificar parells de trucades per assignar i alliberar memòria, Que s'usa en l'analitzador estàtic per detectar errors típics de memòria (pèrdues de memòria, ús després d'alliberar, anomenades dobles a la lliure funció, etc.) i les advertències de l'compilador «-Wmismatched-dealloc», «-Wmismatched- new-delete »i« -Wfree-nonheap-object »que informen sobre operacions de desassignació i desassignació inconsistents.

A l'hora de generar informació de depuració s'utilitza per defecte el format DWARF maig que, en comparació amb versions anteriors, permet generar dades de depuració un 5% més compactes. El suport complet de DWARF maig requereix binutils a l'almenys la versió 25.

Es van millorar les capacitats de la manera ThreadSanitizer (-fsanitize = thread), ja que si afegeix suport per a entorns i temps d'execució alternatius, així com suport per a l'eina de depuració Kernel Concurrency Sanitizer (KCSAN) per detectar dinàmicament condicions de carrera dins de el nucli de Linux. Es van agregar noves opcions «-param tsan-distinguish-volatile» i «-param tsan-instrument-func-entry-exit».

El vectoritzador proporciona la comptabilitat de tot el contingut de la funció i el processament addicional de les capacitats associades amb les interseccions i referències a blocs anteriors en el gràfic de flux de control (CFG).

L'Optimitzador té la capacitat de convertir una sèrie d'operacions condicionals en una expressió de canvi, en què es compara la mateixa variable. En el futur, l'expressió de canvi es pot codificar utilitzant instruccions de prova de bits (per controlar aquesta conversió, s'ha afegit l'opció «-fbit-tests»).

Per a C ++, s'han implementat una part dels canvis i innovacions proposats en l'estàndard C ++ 20, incloses les funcions virtuals «consteval virtual», pseudodestructores per a la terminació de l'cicle de vida dels objectes, utilitzant la classe enum i calculant la mida de una matriu en l'expressió «nova».

Si vols conèixer més a l'respecte, Pots consultar els detalls a el següent enllaç. 


El contingut d'l'article s'adhereix als nostres principis de ètica editorial. Per notificar un error punxa aquí.

Sigues el primer a comentar

Deixa el teu comentari

La seva adreça de correu electrònic no es publicarà. Els camps obligatoris estan marcats amb *

*

*

  1. Responsable de les dades: Miguel Ángel Gatón
  2. Finalitat de les dades: Controlar l'SPAM, gestió de comentaris.
  3. Legitimació: El teu consentiment
  4. Comunicació de les dades: No es comunicaran les dades a tercers excepte per obligació legal.
  5. Emmagatzematge de les dades: Base de dades allotjada en Occentus Networks (UE)
  6. Drets: En qualsevol moment pots limitar, recuperar i esborrar la teva informació.