Pokretanje novu verziju kompilatora GCC (Zbirka GNU kompilatora) 12.1 je već objavljen i kao i sa svim glavnim izdanjima GCC-a, ovo će izdanje donijeti mnoge dodatke, poboljšanja, ispravke pogrešaka i nove značajke, plus ovog mjeseca (23. svibnja) projekt će proslaviti 35 godina od formiranja prvog izdanja.
GCC 12 je već kompajler sustava za Fedoru 36, a GCC 12 će također biti dostupan na Red Hat Enterprise Linuxu u Red Hat Developer Toolsetu (verzija 7) ili Red Hat GCC Toolsetu (verzije 8 i 9).
Programeri GCC-a s ponosom najavljuju još jedno veliko izdanje GCC-a, 12.1.
Ove godine slavimo 35. godišnjicu prve beta verzije GCC-a
I ovog mjeseca proslavit ćemo 35 godina od izlaska GCC 1.0!Ovo izdanje ukida podršku za STABS format za otklanjanje pogrešaka i
uvodi podršku za CTF format za otklanjanje pogrešaka [1]. C i C++
sučelja nastavljaju napredovati s proširenom podrškom za značajke
u nadolazećim standardima C2X i C++23 te standardnoj biblioteci C++
poboljšava podršku za eksperimentalne dijelove C++20 i C++23.
Fortran sučelje sada je u potpunosti usklađeno s TS 29113 za interoperabilnost s C.
Što je novo u GCC 12.1?
U ovoj novoj verziji Provedeno je nekoliko prijedloga, kao što je za jezike C i C++, dodano ugrađena funkcija __builtin_dynamic_object_size za određivanje veličine objekta, kompatibilan sa sličnom funkcijom Clang.
Dodano podrška za atribut "nedostupno" za jezike C i C++ (na primjer, možete označiti funkcije koje će rezultirati pogreškom kada se koriste), kao i dodanu podršku za direktive preprocesiranja "#elifdef" i "#elifndef" za jezike C i C++.
Također se napominje da je Oznaka "-Wbidi-chars" za upozorenje ako su UTF-8 znakovi zlouporabljeni, mijenjajući dvosmjerni redoslijed prikaza teksta, kao i oznaku "-Warray-compare" za izdavanje upozorenja kada pokušavate usporediti dva operanda koja se odnose na nizove.
Osim toga, iImplementacija OpenMP 5.0 i 5.1 standarda (Open Multi-Processing), koji definira API-je i metode za primjenu metoda paralelnog programiranja na višejezgrenim i hibridnim (CPU + GPU/DSP) sustavima sa zajedničkom memorijom i vektorizacijskim jedinicama (SIMD), nastavljen je.
Također poboljšana implementacija OpenACC 2.6 specifikacije paralelnog programiranja, definiranje sredstava za oslobađanje operacija na GPU-ovima i specijaliziranim procesorima kao što je NVIDIA PTX i dodavanje podrške za Intel AVX512-FP16 proširene upute i tip _Float16 u pozadinu generiranja koda x86.
Fortran front-end pruža punu podršku za TS 29113 specifikaciju, koja opisuje mogućnosti za osiguravanje prenosivosti između Fortrana i C koda.
Zastarjela podrška za format pohrane informacija za otklanjanje pogrešaka "STABS" stvoren 1980-ih.
Dodana podrška za proširenje __builtin_shufflevector(vec1, vec2, index1, index2, …) prethodno dodano u Clang, koje pruža jedan poziv za izvođenje uobičajenih operacija nasumice vektora i nasumice.
Kada koristite razinu optimizacije "-O2", vektorizacija je omogućena prema zadanim postavkama (omogućeni su načini -ftree-vectorize i -fvect-cost-model=very-cheap). "Vrlo jeftin" model dopušta vektorizaciju samo ako vektorski kod može u potpunosti zamijeniti skalarni kod koji se vektorizuje.
Dodan način rada "-ftrivial-auto-var-init". kako bi se omogućila eksplicitna inicijalizacija varijable na stogu za pronalaženje problema i blokiranje ranjivosti povezanih s korištenjem neinicijaliziranih varijabli.
Dodano implementacija C funkcija ugrađenih u prevodilac (Intrinsics) za atomsko učitavanje i pohranu podataka u memoriju, na temelju upotrebe proširenih ARM instrukcija (ls64). Dodana podrška za ubrzavanje funkcija memcpy, memmove i memset pomoću proširenja ARM mopoption.
Dodano novi način provjere "-fsanitize=shadow-call-stack" ( ShadowCallStack), koji je trenutno dostupan samo za arhitekturu AArch64 i radi pri prevođenju koda s opcijom "-fixed-r18". Način pruža zaštitu od ponovnog pisanja povratne adrese funkcije u slučaju prekoračenja međuspremnika stoga. Bit zaštite je spremanje povratne adrese u poseban stog "sjene" nakon prijenosa kontrole na funkciju i dohvat ove adrese prije izlaska iz funkcije.
izvor: https://gcc.gnu.org/pipermail