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.
Legyen Ön az első hozzászóló