GCC 12.1 a fost deja lansat, cunoașteți noutățile și aniversarea a 35 de ani

Sigla GNU GCC

Lansarea noua versiune a compilatorului CGC (Colecția compilatorului GNU) 12.1 a fost deja lansat și ca și în cazul tuturor versiunilor majore ale GCC, această versiune va aduce multe completări, îmbunătățiri, remedieri de erori și funcții noi, plus în această lună (23 mai), proiectul va sărbători 35 de ani de la formarea primei versiuni.

GCC 12 este deja compilatorul de sistem pentru Fedora 36, ​​iar GCC 12 va fi disponibil și pe Red Hat Enterprise Linux în Red Hat Developer Toolset (versiunea 7) sau Red Hat GCC Toolset (versiunile 8 și 9).

Dezvoltatorii GCC sunt mândri să anunțe o altă lansare majoră a GCC, 12.1.

Anul acesta sărbătorim cea de-a 35-a aniversare a primei versiuni beta a GCC
Și luna aceasta vom sărbători 35 de ani de la lansarea GCC 1.0!

Această versiune renunță la suportul pentru formatul de depanare STABS și
introduce suport pentru formatul de depanare CTF [1]. C și C++
interfețele continuă să avanseze cu suport extins pentru funcții
în viitoarele standarde C2X și C++23 și în biblioteca standard C++
îmbunătățește suportul pentru părțile experimentale ale C++20 și C++23.
Interfața Fortran este acum pe deplin compatibilă cu TS 29113 pentru interoperabilitate cu C.

Ce este nou în GCC 12.1?

În această nouă versiune Au fost implementate mai multe propuneri, cum ar fi pentru limbi C și C++, adăugate o funcție încorporată __builtin_dynamic_object_size pentru a determina dimensiunea unui obiect, compatibil cu o funcție similară a lui Clang.

Adăugat suport pentru atributul „indisponibil” pentru limbajele C și C++ (de exemplu, puteți marca funcțiile care vor avea ca rezultat o eroare atunci când sunt utilizate), precum și suport adăugat pentru directivele de preprocesare „#elifdef” și „#elifndef” pentru limbajele C și C++.

De asemenea, se remarcă faptul că Indicator „-Wbidi-chars” pentru a avertiza dacă caracterele UTF-8 sunt folosite greșit, modificând ordinea de afișare a textului bidirecțională, precum și indicatorul „-Warray-compare” pentru a emite un avertisment atunci când încercați să comparați doi operanzi care se referă la matrice.

În plus, iImplementarea standardelor OpenMP 5.0 și 5.1 (Open Multi-Processing), care definesc API-uri și metode de aplicare a metodelor de programare paralelă pe sisteme multicore și hibride (CPU + GPU / DSP) cu memorie partajată și unități de vectorizare (SIMD).

De asemenea implementare îmbunătățită a specificației de programare paralelă OpenACC 2.6, definirea mijloacelor de descărcare a operațiunilor pe GPU-uri și procesoare specializate, cum ar fi NVIDIA PTX și adăugarea suportului pentru instrucțiunile extinse Intel AVX512-FP16 și tipul _Float16 la backend-ul de generare a codului x86.

Front-end-ul Fortran oferă suport complet pentru specificația TS 29113, care descrie posibilitățile de a asigura portabilitatea între Fortran și codul C.

Suport depreciat pentru formatul de stocare a informațiilor de depanare „STABS” creat în anii 1980.

S-a adăugat suport pentru extensia __builtin_shufflevector(vec1, vec2, index1, index2, …) adăugată anterior la Clang, care oferă un singur apel pentru a efectua operații comune de amestecare și amestecare vectorială.

Când se utilizează nivelul de optimizare „-O2”, vectorizarea este activată implicit (modurile -ftree-vectorize și -fvect-cost-model=foarte ieftine sunt activate). Modelul „foarte ieftin” permite vectorizarea doar dacă codul vectorial poate înlocui complet codul scalar vectorizabil.

S-a adăugat modul „-ftrivial-auto-var-init”. pentru a permite inițializarea explicită a variabilelor pe stivă pentru a urmări problemele și a bloca vulnerabilitățile asociate cu utilizarea variabilelor neinițializate.

A adăugat implementarea funcțiilor C încorporate în compilator (Intrinseci) pentru încărcarea atomică și stocarea datelor în memorie, bazată pe utilizarea instrucțiunilor ARM extinse (ls64). S-a adăugat suport pentru accelerarea funcțiilor memcpy, memmove și memset folosind extensia ARM mopoption.

Adăugat un nou mod de verificare „-fsanitize=shadow-call-stack” ( ShadowCallStack ), care este în prezent disponibil numai pentru arhitectura AArch64 și funcționează la compilarea codului cu opțiunea „-fixed-r18”. Modul oferă protecție împotriva rescrierii adresei de retur a funcției în cazul depășirii buffer-ului stivei. Esența protecției este de a salva adresa de retur într-o stivă separată „umbră” după transferul controlului către funcție și de a prelua această adresă înainte de a ieși din funcție.

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


Lasă comentariul tău

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

*

*

  1. Responsabil pentru date: AB Internet Networks 2008 SL
  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.