GCC 12.1 jau ir izlaists, zināt tās jaunumus un 35. gadadienu

GNU GCC logotips

Gada sākums kompilatora jaunā versija GCC (GNU kompilatoru kolekcija) 12.1 jau ir izlaists un, tāpat kā ar visiem lielākajiem GCC laidieniem, arī šajā laidienā būs daudz papildinājumu, uzlabojumu, kļūdu labojumu un jaunas funkcijas, turklāt šomēnes (23. maijā) projekts svinēs 35 gadus kopš pirmā laidiena izveidošanas.

GCC 12 jau ir Fedora 36 sistēmas kompilators, un GCC 12 būs pieejams arī Red Hat Enterprise Linux Red Hat Developer Toolset (7. versija) vai Red Hat GCC rīku komplektā (8. un 9. versija).

GCC izstrādātāji ar lepnumu paziņo par vēl vienu nozīmīgu GCC versiju 12.1.

Šogad mēs atzīmējam GCC pirmās beta versijas 35. gadadienu
Un šomēnes svinēsim 35 gadus kopš GCC 1.0 izlaišanas!

Šis laidiens pārtrauc atbalstu STABS atkļūdošanas formātam un
ievieš atbalstu CTF atkļūdošanas formātam [1]. C un C++
saskarnes turpina attīstīties ar paplašinātu funkciju atbalstu
gaidāmajos C2X un C++23 standartos un C++ standarta bibliotēkā
uzlabo atbalstu C++20 un C++23 eksperimentālajām daļām.
Fortran interfeiss tagad pilnībā atbilst TS 29113 savietojamībai ar C.

Kas jauns GCC 12.1?

Šajā jaunajā versijā Vairāki priekšlikumi ir īstenoti, piemēram, valodām C un C++, pievienots iebūvēta funkcija __buildin_dynamic_object_size, lai noteiktu objekta izmēru, savietojams ar līdzīgu Clang funkciju.

Pievienots atribūta "nav pieejams" atbalsts C un C++ valodām (piemēram, varat atzīmēt funkcijas, kuru izmantošanas rezultātā radīsies kļūda), kā arī pievienots atbalsts priekšapstrādes direktīvām "#elifdef" un "#elifndef" C un C++ valodām.

Tiek arī atzīmēts, ka "-Wbidi-chars" karodziņš, lai brīdinātu, ja tiek ļaunprātīgi izmantotas UTF-8 rakstzīmes, mainot divvirzienu teksta attēlošanas secību, kā arī karogu "-Warray-compare", lai izdotu brīdinājumu, mēģinot salīdzināt divus operandus, kas attiecas uz masīviem.

Turklāt iOpenMP 5.0 un 5.1 standartu ieviešana (Open Multi-Processing), kas definē API un metodes paralēlās programmēšanas metožu pielietošanai daudzkodolu un hibrīdās (CPU + GPU / DSP) sistēmās ar koplietojamo atmiņu un vektorizācijas vienībām (SIMD).

Arī uzlabota OpenACC 2.6 paralēlās programmēšanas specifikācijas ieviešana, definējot līdzekļus GPU un specializēto procesoru, piemēram, NVIDIA PTX, darbību izkraušanai un pievienojot atbalstu Intel AVX512-FP16 paplašinātajām instrukcijām un tipam _Float16 x86 koda ģenerēšanas aizmugursistēmai.

Fortran priekšgals nodrošina pilnu atbalstu TS 29113 specifikācijai, kas apraksta iespējas nodrošināt pārnesamību starp Fortran un C kodu.

Novecojis atbalsts "STABS" atkļūdošanas informācijas uzglabāšanas formātam, kas tika izveidots 1980. gs. XNUMX. gados.

Pievienots atbalsts paplašinājumam __builtin_shufflevector(vec1, vec2, index1, index2, …), kas iepriekš tika pievienots Clang, kas nodrošina vienu zvanu, lai veiktu parastās vektoru jaukšanas un jaukšanas darbības.

Izmantojot optimizācijas līmeni "-O2", vektorizācija ir iespējota pēc noklusējuma (ir iespējoti režīmi -ftree-vectorize un -fvect-cost-model=very-cheap). "Ļoti lēts" modelis pieļauj vektorizāciju tikai tad, ja vektora kods var pilnībā aizstāt vektorizējamo skalāro kodu.

Pievienots režīms "-ftrivial-auto-var-init". lai iespējotu nepārprotamu mainīgo inicializēšanu kaudzē, lai izsekotu problēmas un bloķētu ievainojamības, kas saistītas ar neinicializētu mainīgo izmantošanu.

Pievienoja kompilatorā iebūvēto C funkciju ieviešana (Intrinsics) atomu ielādei un datu glabāšanai atmiņā, pamatojoties uz paplašinātu ARM instrukciju izmantošanu (ls64). Pievienots atbalsts memcpy, memmove un memset funkciju paātrināšanai, izmantojot ARM mopooption paplašinājumu.

Pievienots jauns verifikācijas režīms "-fsanitize=shadow-call-stack" ( ShadowCallStack), kas pašlaik ir pieejams tikai AArch64 arhitektūrai un darbojas, kompilējot kodu ar opciju "-fixed-r18". Režīms nodrošina aizsardzību pret funkcijas atgriešanas adreses pārrakstīšanu steka bufera pārpildes gadījumā. Aizsardzības būtība ir pēc kontroles nodošanas funkcijai saglabāt atgriešanas adresi atsevišķā "ēnas" stekā un izgūt šo adresi pirms iziešanas no funkcijas.

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


Atstājiet savu komentāru

Jūsu e-pasta adrese netiks publicēta. Obligātie lauki ir atzīmēti ar *

*

*

  1. Atbildīgais par datiem: AB Internet Networks 2008 SL
  2. Datu mērķis: SPAM kontrole, komentāru pārvaldība.
  3. Legitimācija: jūsu piekrišana
  4. Datu paziņošana: Dati netiks paziņoti trešām personām, izņemot juridiskus pienākumus.
  5. Datu glabāšana: datu bāze, ko mitina Occentus Networks (ES)
  6. Tiesības: jebkurā laikā varat ierobežot, atjaunot un dzēst savu informāciju.