GCC 12.1 ja va ser alliberat coneix les seves novetats i el 35è aniversari

Logo GNU GCC

El llançament de la nova versió del compilador GCC (GNU Compiler Collection ) 12.1 ja va ser donat a conèixer i com a totes les versions principals de GCC, aquesta versió portarà moltes addicions, millores, correccions d'errors i noves característiques, a més que aquest mes (23 de maig), el projecte celebrarà 35 anys des de la formació del primer llançament.

GCC 12 ja és el compilador del sistema per a Fedora 36, ​​a més que GCC 12 també estarà disponible a Red Hat Enterprise Linux a Red Hat Developer Toolset (versió 7) o Red Hat GCC Toolset (versions 8 i 9).

Els desenvolupadors de GCC s'enorgulleixen d'anunciar un altre llançament important de GCC, 12.1.

Aquest any celebrem el 35è aniversari de la primera versió beta de GCC
i aquest mes celebrarem 35 anys des del llançament de GCC 1.0!

Aquesta versió deixa d'admetre el format de depuració STABS i
introdueix suport per al format de depuració CTF [1]. El C i C++
les interfícies continuen avançant amb l'ampliació del suport per a funcions
en els propers estàndards C2X i C++23 i la biblioteca estàndard de C++
millora el suport per a les parts experimentals de C++20 i C++23.
La interfície de Fortran ara és totalment compatible amb TS 29113 per a la interoperabilitat amb C.

Què hi ha de nou a GCC 12.1?

En aquesta nova versió s'han implementat diverses propostes, com per exemple per als llenguatges C i C++, es va afegir una funció incorporada __builtin_dynamic_object_size per determinar la mida d'un objecte, compatible amb una funció similar de Clang.

es va agregar suport per a l'atribut «unavailable» per als llenguatges C i C++ (per exemple, podeu marcar funcions que donaran com a resultat un error quan s'usen), així com també es va afegir compatibilitat amb les directives de preprocessament «#elifdef» i «#elifndef» per als llenguatges C i C++.

També es destaca que es va agregar el indicador «-Wbidi-chars» per advertir si els caràcters UTF-8 es fan servir incorrectament, canviant l'ordre de visualització del text bidireccional, així com també l'indicador «-Warray-compare» per emetre un advertiment en intentar comparar dos operands que es refereixen a matrius.

A més d'això se'n destaca la implementació dels estàndards OpenMP 5.0 i 5.1 (Open Multi-Processing), que defineixen API i mètodes per aplicar mètodes de programació paral·lela en sistemes multinucli i híbrids (CPU + GPU/DSP) amb memòria compartida i unitats de vectorització (SIMD), va ser continuat.

també la implementació millorada de l'especificació de programació paral·lela OpenACC 2.6, que defineix els mitjans per descarregar operacions en GPU i processadors especialitzats com a NVIDIA PTX i que es va afegir compatibilitat amb les instruccions esteses d'Intel AVX512-FP16 i el tipus _Float16 al backend de generació de codi x86.

El front-end de Fortran ofereix suport complet per a l'especificació TS 29113 , que descriu les possibilitats per garantir la portabilitat entre Fortran i el codi C.

Suport en desús per al format d'emmagatzematge d'informació de depuració » STABS » creat a la dècada de 1980.

S'hi va afegir suport per a l'extensió __builtin_shufflevector(vec1, vec2, index1, index2, …) agregada prèviament a Clang, que ofereix una sola trucada per realitzar operacions de reproducció aleatòria i reproducció aleatòria de vectors comuns.

Quan s'utilitza el nivell d'optimització "-O2", la vectorització està habilitada per defecte (els modes -ftree-vectorize i -fvect-cost-model=very-cheap estan habilitats). El « model molt barat » permet la vectorització només si el codi vectorial pot reemplaçar completament al codi escalar vectoritzable.

S'ha afegit el mode "-ftrivial-auto-var-init" per habilitar la inicialització explícita de variables a la pila per rastrejar problemes i bloquejar vulnerabilitats associades a l'ús de variables no inicialitzades.

S'ha afegit la implementació de funcions C integrades al compilador (Intrinsics) per a la càrrega atòmica i l'emmagatzematge de dades a la memòria, basat en l'ús d'instruccions ARM esteses (ls64). S'ha afegit suport per accelerar les funcions memcpy, memmove i memset usant l'extensió ARM mopoption.

es va agregar un nou mode de verificació «-fsanitize=shadow-call-stack» ( ShadowCallStack ), que només està disponible per a l'arquitectura AArch64 i funciona quan es compila codi amb l'opció «-ffixed-r18». El mode brinda protecció contra la reescriptura de la direcció de retorn de la funció en cas de desbordament del memòria intermèdia a la pila. L'essència de la protecció és desar la direcció de retorn en una pila ombra separada després de la transferència de control a la funció i recuperar aquesta direcció abans de sortir de la funció.

font: https://gcc.gnu.org/pipermail


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: AB Internet Networks 2008 SL
  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ó.