GCC 12.1 jau buvo išleistas, žinokite jos naujienas ir 35-ąsias metines

GNU GCC logotipas

Paleidimas nauja kompiliatoriaus versija GCC (GNU kompiliatoriaus kolekcija) 12.1 jau buvo išleistas ir kaip ir visi pagrindiniai GCC leidimai, šis leidimas atneš daug papildymų, patobulinimų, klaidų pataisymų ir naujų funkcijų, be to, šį mėnesį (gegužės 23 d.) projektas švęs 35 metų sukaktį nuo pirmojo leidimo sukūrimo.

GCC 12 jau yra Fedora 36 sistemos kompiliatorius, o GCC 12 taip pat bus pasiekiamas Red Hat Enterprise Linux Red Hat Developer Toolset (7 versija) arba Red Hat GCC Toolset (8 ir 9 versijos).

GCC kūrėjai didžiuojasi galėdami pranešti apie dar vieną svarbų GCC leidimą, 12.1.

Šiais metais švenčiame 35-ąsias pirmosios GCC beta versijos metines
Ir šį mėnesį švęsime 35-erius GCC 1.0 išleidimo metus!

Šis leidimas nustoja palaikyti STABS derinimo formatą ir
pristato CTF derinimo formato palaikymą [1]. C ir C++
sąsajos ir toliau tobulėja dėl išplėsto funkcijų palaikymo
būsimuose C2X ir C++23 standartuose bei C++ standartinėje bibliotekoje
pagerina C++20 ir C++23 eksperimentinių dalių palaikymą.
„Fortran“ sąsaja dabar visiškai suderinama su TS 29113, kad būtų galima suderinti su C.

Kas naujo GCC 12.1?

Šioje naujoje versijoje Įgyvendinti keli pasiūlymai, pvz., kalboms C ir C++, pridėta integruota funkcija __buildin_dynamic_object_size, kad nustatytų objekto dydį, suderinamas su panašia Clang funkcija.

Pridėta atributo "nepasiekiamas" palaikymas C ir C++ kalboms (pavyzdžiui, galite pažymėti funkcijas, kurias naudojant, sukels klaida), taip pat pridėtas išankstinio apdorojimo direktyvų „#elifdef“ ir „#elifndef“ palaikymas C ir C++ kalboms.

Taip pat pažymima, kad „-Wbidi-chars“ žyma, įspėjanti, jei UTF-8 simboliai naudojami netinkamai, keičiant dvikrypčio teksto rodymo tvarką, taip pat vėliavėlę „-Warray-palyginti“, kad būtų pateiktas įspėjimas, kai bandoma palyginti du operandus, kurie nurodo masyvus.

Be to, iOpenMP 5.0 ir 5.1 standartų diegimas Buvo tęsiamas (Open Multi-Processing), apibrėžiantis API ir lygiagretaus programavimo metodų taikymo metodus daugiagyslėse ir hibridinėse (CPU + GPU / DSP) sistemose su bendra atmintimi ir vektorizavimo blokais (SIMD).

Taip pat patobulintas OpenACC 2.6 lygiagretaus programavimo specifikacijos įgyvendinimas, apibrėžiant GPU ir specializuotų procesorių, pvz., NVIDIA PTX, operacijų iškrovimo būdus ir įtraukiant „Intel AVX512-FP16“ išplėstinių instrukcijų ir _Float16 tipo palaikymą x86 kodo generavimo fone.

Fortran priekinė dalis visiškai palaiko TS 29113 specifikaciją, kuri apibūdina galimybes užtikrinti perkeliamumą tarp Fortran ir C kodų.

Nebenaudojamas „STABS“ derinimo informacijos saugojimo formato, sukurto devintajame dešimtmetyje, palaikymas.

Pridėtas __builtin_shufflevector(vec1, vec2, index1, index2, …) plėtinio, anksčiau pridėto prie Clang, palaikymas, kuris suteikia vieną iškvietimą atlikti įprastas vektorių maišymo ir maišymo operacijas.

Naudojant „-O2“ optimizavimo lygį, vektorizavimas įjungtas pagal numatytuosius nustatymus (įjungti režimai -ftree-vectorize ir -fvect-cost-model=very-cheap). „Labai pigus“ modelis leidžia vektorizuoti tik tuo atveju, jei vektorinis kodas gali visiškai pakeisti vektorizuojamą skaliarinį kodą.

Pridėtas „-ftrivial-auto-var-init“ režimas įgalinti aiškų kintamųjų inicijavimą krūvoje, kad būtų galima atsekti problemas ir blokuoti pažeidžiamumus, susijusius su nepainicijuotų kintamųjų naudojimu.

Pridėjo kompiliatoriuje įmontuotų C funkcijų įgyvendinimas (Intrinsics) atominiam įkėlimui ir duomenų saugojimui atmintyje, remiantis išplėstų ARM instrukcijų naudojimu (ls64). Pridėtas palaikymas pagreitinant „memcpy“, „memmove“ ir „memset“ funkcijas naudojant ARM „mopooption“ plėtinį.

Pridėta naujas patvirtinimo režimas „-fsanitize=shadow-call-stack“ (ShadowCallStack), kuri šiuo metu yra prieinama tik AArch64 architektūrai ir veikia sudarant kodą su "-fixed-r18" parinktimi. Režimas suteikia apsaugą nuo funkcijos grįžtamojo adreso perrašymo, jei perpildomas dėklo buferis. Apsaugos esmė – po valdymo perdavimo funkcijai išsaugoti grąžinimo adresą atskirame „šešėliniame“ krūvelėje ir atgauti šį adresą prieš išeinant iš funkcijos.

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


Palikite komentarą

Jūsų elektroninio pašto adresas nebus skelbiamas. Privalomi laukai yra pažymėti *

*

*

  1. Už duomenis atsakingas: AB Internet Networks 2008 SL
  2. Duomenų paskirtis: kontroliuoti šlamštą, komentarų valdymą.
  3. Įteisinimas: jūsų sutikimas
  4. Duomenų perdavimas: Duomenys nebus perduoti trečiosioms šalims, išskyrus teisinius įsipareigojimus.
  5. Duomenų saugojimas: „Occentus Networks“ (ES) talpinama duomenų bazė
  6. Teisės: bet kuriuo metu galite apriboti, atkurti ir ištrinti savo informaciją.