A GCC 11.1 már megjelent, ezek a legfontosabb hírek és változások

Egy év fejlesztés után Megjelent a GCC 11.1 fordítócsomag új verziója, az első jelentős kiadás az új GCC 11.x ágban. Az új verziószámozási séma szerint a fejlesztés során a 11.0 verziót használták, és nem sokkal a GCC 11.1 kiadása előtt a GCC 12.0 egyik ága már elágazott, hogy kialakítsa a GCC 12.1 következő fő verzióját.

A GCC 11.1 kiemelkedik az alapértelmezett DWARF 5 hibakeresési fájlformátumra való áttérésről, a C ++ 17 szabvány alapértelmezett beépítése ("-std = gnu ++ 17"), a C ++ 20 standarddal való kompatibilitás jelentős javítása, a C ++ 23 kísérleti támogatása, a jövőbeli szabványokhoz kapcsolódó fejlesztések a C nyelv (C2x), új teljesítményoptimalizálások.

GCC 11.1 Főbb új funkciók

A C ++ nyelv alapértelmezett módja a C ++ 17 szabvány használatára változik, a korábban javasolt C ++ 14 helyett. Szelektíven letilthatja az új C ++ 17 viselkedést olyan sablonok feldolgozása során, amelyek paraméterként más sablonokat használnak (-fno-new-ttp-matching).

Hozzáadott támogatás a hardveres gyorsításhoz az AddressSanitizer eszköz, amely lehetővé teszi, hogy meghatározza a felszabadult memóriaterületekhez való hozzáférés tényeit, túllépve a lefoglalt puffer határait, és néhány más típusú hibát a memóriával végzett munka során. Jelenleg a hardveres gyorsítás csak az AArch64 architektúrához érhető el, és annak használatára összpontosít a Linux kernel fordításakor.

A bemutatott másik újdonság a optimalizálás és fejlesztések az eljárások között, mivel új IPA-modref hozzáférést adtak hozzá (-fipa-modref) a függvényhívások mellékhatásainak nyomon követéséhez és az elemzés pontosságának javításához. Emellett a az IPA-ICF bérlet jobb végrehajtása (-fipa-icf), amely csökkenti a fordítási memória felhasználását és növeli az egyesített funkciók számát, amelyekhez azonos kódblokkok egyesülnek.

El profil-vezérelt optimalizáló motor (PGO), továbbfejlesztett "-profil-értékek" mód azáltal, hogy nyomon követi a közvetett hívások további paramétereit.

is Kiemelt az OpenMP 5.0 szabvány folyamatos megvalósítása (Open Multi-Processing), amelyben hozzáadta a hozzárendelési irányelv kezdeti támogatását és az egyenetlen hurkok használatának lehetőségét az OpenMP buildekben. Az OMP_TARGET_OFFLOAD környezeti változó mostantól támogatott.

Javult az OpenACC 2.6 párhuzamos programozási specifikáció végrehajtása a C, C ++ és Fortran nyelvekhez, amely meghatározza a GPU-khoz és speciális processzorokhoz, például az NVIDIA PTX-hez történő műveletek kiszállításának eszközeit.

A C család nyelveihez egy új "no_stack_protector" attribútum került bevezetésre, Olyan funkciók jelölésére tervezték, amelyeknél a veremvédelem nem engedélyezhető ("-fstack-protector"). A "malloc" attribútumot kibővítették a lefoglalási és memória felszabadítási híváspárok azonosításának támogatásával, amelyet a statikus elemző használ a tipikus memóriahibák (memóriaszivárgások, ingyenes utáni használat, kettős hívás az ingyenes funkcióra stb.) és a fordító figyelmeztetéseire: "-Wmismatched-dealloc", "-Wmismatched- new-delete" és " -Info-nonheap-object "jelentése inkonzisztens üzletkötési és üzletkötési műveletekről.

A hibakeresési információk előállításakor alapértelmezés szerint a DWARF 5 formátumot használják, amely a korábbi verziókhoz képest 25% -kal kompaktabb hibakeresési adatok előállítását teszi lehetővé. A teljes DWARF 5 támogatáshoz a binutils használatához legalább a 2.35.2 verzióra van szükség.

Továbbfejlesztett ThreadSanitizer mód képességek (-fsanitize = szál), mivel igene támogatást nyújt az alternatív futási időkhöz és környezetekhez, valamint a Kernel Concurrency Sanitizer (KCSAN) hibakereső eszköz támogatása a versenyfeltételek dinamikus felismerése érdekében a Linux kernelen. Új opciók kerültek be a „–param tsan-megkülönböztetni-ingatag” és a „–param tsan-instrument-func-entry-exit” opciókkal.

A vektorizáló biztosítja a függvény teljes tartalmának elszámolását és a vezérlő folyamatábra (CFG) metszéspontjaihoz kapcsolódó képességek további feldolgozását és az előző blokkokra való hivatkozásokat.

Az optimalizáló képes feltételes műveletek sorozatát átalakítani változási kifejezéssé, amelyben ugyanazt a változót hasonlítják össze. A jövőben a változás kifejezést bit teszt utasításokkal lehet kódolni (ennek az átalakításnak a vezérléséhez a "-fbit-tests" opció került hozzá).

A C ++ esetében a C ++ 20 szabványban javasolt változtatások és újítások egy része megvalósult, beleértve a "consteval virtual" virtuális függvényeket, az objektumok életciklusának leállítására szolgáló ál-rombolókat, az enum osztály használatát és a számításokat. tömb mérete az "új" kifejezésben.

Ha többet szeretne tudni róla, a részleteket itt ellenőrizheti a következő link. 


A cikk tartalma betartja a szerkesztői etika. A hiba bejelentéséhez kattintson a gombra itt.

Legyen Ön az első hozzászóló

Hagyja megjegyzését

E-mail címed nem kerül nyilvánosságra. Kötelező mezők vannak jelölve *

*

*

  1. Az adatokért felelős: Miguel Ángel Gatón
  2. Az adatok célja: A SPAM ellenőrzése, a megjegyzések kezelése.
  3. Legitimáció: Az Ön beleegyezése
  4. Az adatok közlése: Az adatokat csak jogi kötelezettség alapján továbbítjuk harmadik felekkel.
  5. Adattárolás: Az Occentus Networks (EU) által üzemeltetett adatbázis
  6. Jogok: Bármikor korlátozhatja, helyreállíthatja és törölheti adatait.