A GCC 13 fordítócsomag kiadása

Egy év fejlesztés után megjelent az ingyenes GCC 13.1 fordítócsomag, az első jelentős kiadás az új GCC 13.x ágban. Az új kiadásszámozási séma szerint a fejlesztés során a 13.0-s verziót használták, nem sokkal a GCC 13.1 megjelenése előtt pedig már elágazódott a GCC 14.0 ága, amelyből a GCC 14.1 következő jelentős kiadása alakul ki.

Nagy változások:

  • A GCC egy frontendet fogadott el a Modula-2 programozási nyelven történő programok készítéséhez. Támogatja az építési kódot, amely megfelel a PIM2, PIM3 és PIM4 nyelvjárásoknak, valamint az adott nyelvhez elfogadott ISO szabványnak.
  • A gccrs projekt (GCC Rust) által készített Rust nyelvi fordító megvalósítását tartalmazó frontend került a GCC forrásfába. A jelenlegi nézetben a forntend kísérletiként van megjelölve, és alapértelmezés szerint le van tiltva. Ha elkészült a frontend (várhatóan a következő kiadásban), a szabványos GCC eszközkészlettel le lehet fordítani a Rust programokat anélkül, hogy telepíteni kellene az LLVM fejlesztésekkel épített rustc fordítót.
  • A Link-in-Step Optimization (LTO) a GNU make projekt által karbantartott jobszerver (jobserver) támogatásával optimalizálja a párhuzamos build-végrehajtást több szálon keresztül. A GCC-ben a jobszerver a munka párhuzamosítására szolgál az LTO optimalizálás során a teljes program kontextusában (WPA, Whole-program Analysis). A nevesített csövek (--jobserver-style=fifo) alapértelmezés szerint a jobszerverrel kommunikálnak.
  • A statikus elemző (-fanalyzer) 20 új diagnosztikai ellenőrzést kínál, beleértve a "-Wanalyzer-out-of-bounds", "-Wanalyzer-allokációs-méret", "-Wanalyzer-deref-before-check", "-Wanalyzer-infinite" -rekurzió" -Wanalyzer-jump-through-null", "-Wanalyzer-va-list-leak".
  • Megvalósult a diagnosztika JSON-alapú SARIF formátumban történő kimeneti lehetősége. Az új formátum segítségével statikus elemzési eredményeket kaphatunk (GCC -fanalyzer), valamint információkat kaphatunk a figyelmeztetésekről és hibákról. Az engedélyezés a "-fdiagnostics-format=sarif-stderr|sarif-file|json-stderr|json|json-file" opcióval történik, ahol a "json" opciók a JSON formátum GCC-specifikus változatát eredményezik. .
  • Megvalósított néhány, a C23 C szabványban definiált szolgáltatást, mint például a nullptr konstans nullmutatók meghatározásához, megkönnyíti a változó számú argumentumú listák használatát (variadic), az enumok képességeinek kiterjesztését, a noreturn attribútumot, lehetővé téve a constexpr és auto objektumok meghatározásakor, typeof és typeof_unqual, új kulcsszavak alignas, alignof, bool, false, static_assert, thread_local és true, lehetővé téve az üres zárójelek használatát inicializáláskor.
  • Megvalósított néhány, a C++23 szabványban definiált szolgáltatást, mint például az összetett kifejezések végére történő jelölések, a char8_t típussal való kompatibilitás, a #warning preprocessor direktíva, amelyet (\u{}, \o{} határol. , \x{}), és nevű ('\N{LATIN NAGYBETŰ A}') escape szekvenciák, statikus operátor(), statikus operátor[], egyenlőség operátor kifejezéseken belül, a constexpr használatára vonatkozó bizonyos korlátozások kivételével, támogatás UTF-8 esetén a forrásszövegekben.
  • Továbbfejlesztett kísérleti támogatás a C++20 és C++23 szabványokhoz a libstdc++-ban, például a fejlécfájlok támogatása és std::formátum, kiterjesztett fejlécfájl képességek , további lebegőpontos típusok hozzáadva, fejlécfájlok implementálva És .
  • Új függvényattribútumok hozzáadva annak dokumentálásához, hogy egy fájlleíró egész szám változóban van átadva: "__attribute__((fd_arg(N)))", "__attribute__((fd_arg_read(N)))" és "__attribute__((fd_arg_write(N)) )) ". A megadott attribútumok statikus elemzőben (-fanalyzer) használhatók a fájlleírókkal végzett hibás munka észlelésére.
  • Egy új "__attribute__((assume(EXPR)))" attribútum került hozzáadásra, amellyel a fordítónak elmondhatja, hogy a kifejezés igaz, és a fordító használhatja ezt a tényt anélkül, hogy kiértékelné a kifejezést.
  • Hozzáadott "-fstrict-flex-arrays=[level]" jelző a rugalmas tömbelemek struktúrákban történő feldolgozásakor (Flexible Array Members, határozatlan méretű tömb a struktúra végén, például "int b[] ").
  • A „-Wenum-int-mismatch” jelző hozzáadva figyelmeztetéseket ad ki, ha eltérés van a felsorolt ​​típusok és az egész típusok között.
  • A Fortran front-end teljes mértékben támogatja a véglegesítést.
  • Az általános funkciók és típusok (generics) támogatása a Go nyelv kezelőfelületéhez került, és biztosított a kompatibilitás a Go 1.18 nyelv csomagjaival.
  • Az AArch64 háttérrendszer támogatja az Ampere-1A (ampere1a), Arm Cortex-A715 (cortex-a715), Arm Cortex-X1C (cortex-x1c), Arm Cortex-X3 (cortex-x3) és Arm Neoverse V2 (neoverse -v2) CPU-t. . Az "armv9.1-a", "armv9.2-a" és "armv9.3-a" argumentumok támogatása hozzáadásra került a "-march=" opcióhoz. Támogatás hozzáadva a FEAT_LRCPC, FEAT_CSSC és FEAT_LSE2 processzorbővítményekhez.
  • A STAR-MC1 (star-mc1), Arm Cortex-X1C (cortex-x1c) és Arm Cortex-M85 (cortex-m85) CPU-k támogatása hozzáadásra került az ARM architektúra háttérrendszeréhez.
  • Az Intel Raptor Lake, Meteor Lake, Sierra Forest, Grand Ridge, Emerald Rapids, Granite Rapids és AMD Zen 86 (znver4) processzorok támogatásával bővült az x4 háttérrendszer. Megvalósult az Intel processzorokban javasolt AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT, CMPccXADD, AMX-FP16, PREFETCHI, RAO-INT és AMX-COMPLEX utasításkészlet architektúra-bővítések. Az SSE2-vel rendelkező rendszereken a C és C++ esetén a __bf16 típus biztosított.
  • Az AMD Radeon GPU-k (GCN) kódgeneráló háttérrendszere lehetővé teszi az AMD Instinct MI200 gyorsítók használatát az OpenMP/OpenACC teljesítményének javítása érdekében. Továbbfejlesztett vektorizálás a SIMD utasításokkal.
  • Jelentősen kibővült háttérszolgáltatások a LoongArch platformhoz.
  • Hozzáadott támogatás a CPU T-Head XuanTie C906-hoz (thead-c906) a RISC-V háttérrendszerben. A RISC-V Vector Extension Intrinsic 0.11 specifikációjában meghatározott vektorkezelők megvalósítása. 30 RISC-V specifikáció-bővítmény támogatása hozzáadva.
  • Ha megosztott objektumokat generál a "-shared" opcióval, az indítási kód már nem kerül hozzáadásra a lebegőpontos környezet hozzáadása után, ha a "-Ofast", "-ffast-math" vagy "-funsafe-math-optimizations" optimalizálás engedélyezve van. .
  • A DWARF hibakeresési formátum támogatása szinte minden konfigurációban megvalósul.
  • A "-gz=zstd" opció hozzáadva a hibakeresési információk tömörítéséhez a Zstandard algoritmus használatával. Eltávolítottuk a „-gz=zlib-gnu” elavult hibakeresési információ-tömörítési mód támogatását.
  • Megjelent az OpenMP 5.2 (Open Multi-Processing) kezdeti támogatása, és folytatódott az OpenMP 5.0 és 5.1 szabványok bevezetése, amelyek API-kat és módszereket határoznak meg a párhuzamos programozási módszerek alkalmazásához többmagos és hibrid (CPU + GPU / DSP) rendszereken. megosztott memória és vektorizációs egységek (SIMD).
  • Az 1980-as években létrehozott és a dbx hibakeresőben használt régi STABS hibakeresési információ tárolási formátum elavult támogatása (a -gstabs és -gxcoff paraméterekkel engedélyezve).
  • Elavult a Solaris 11.3 támogatása (a platformot támogató kódot eltávolítjuk egy későbbi kiadásban).

Forrás: opennet.ru

Hozzászólás