Verëffentlechung vun der GCC 13 Compiler Suite

No engem Joer vun der Entwécklung ass déi gratis GCC 13.1 Compiler Suite verëffentlecht ginn, déi éischt bedeitend Verëffentlechung an der neier GCC 13.x Branche. Am Aklang mat der neier Verëffentlechungsnummeréierungsschema gouf d'Versioun 13.0 am Entwécklungsprozess benotzt, a kuerz virun der Verëffentlechung vum GCC 13.1 war d'GCC 14.0 Filial scho ofgeschnidden, op Basis vun där déi nächst grouss Verëffentlechung, GCC 14.1, géif geformt ginn.

Main Ännerungen:

  • GCC enthält e Frontend fir Programmer an der Modula-2 Programméiersprooch ze montéieren. D'Versammlung vum Code entsprécht dem PIM2, PIM3 a PIM4 Dialekter, souwéi den akzeptéierten ISO Standard fir eng bestëmmte Sprooch, gëtt ënnerstëtzt.
  • E Frontend mat enger Implementatioun vum Rust Sprooche-Compiler virbereet vum gccrs-Projet (GCC Rust) gouf zum GCC Quellbaum bäigefüügt. A senger aktueller Form ass de Forward Enn als experimentell markéiert an als Standard behënnert. Wann de Frontend fäerdeg ass (erwaart an der nächster Verëffentlechung), kënnen d'Standard GCC Tools benotzt ginn fir Programmer an der Rust Sprooch ze kompiléieren ouni de Rustc Compiler z'installéieren, gebaut mat LLVM Entwécklungen.
  • De Link Time Optimization (LTO) Motor huet Ënnerstëtzung bäigefüügt fir den Jobserver ënnerstëtzt vum GNU Make-Projet fir d'Ausféierung vu parallele Builds iwwer verschidde Threads ze optimiséieren. Am GCC gëtt den Jobserver benotzt fir d'Aarbecht während der LTO Optimiséierung am Kontext vum ganze Programm (WPA, Whole-Program Analysis) ze paralleliséieren. Fir mam Jobserver ze interagéieren, ginn benannt Päifen als Standard benotzt (-jobserver-style=fifo).
  • De statesche Analysator (-fanalyzer) bitt 20 nei Diagnostice Kontrollen, dorënner "-Wanalyzer-out-of-bounds", "-Wanalyzer-allocation-size", "-Wanalyzer-deref-before-check", "-Wanalyzer-infinite -recursion" -Wanalyzer-jump-through-null", "-Wanalyzer-va-list-leak".
  • D'Kapazitéit fir Diagnostik am SARIF-Format auszeginn, baséiert op JSON, gouf implementéiert. Dat neit Format ka benotzt ginn fir statesch Analyseresultater ze kréien (GCC -fanalyzer), souwéi Warnung a Feelerinformatioun ze kréien. D'Aktivéierung gëtt mat der Optioun "-fdiagnostics-format=sarif-stderr|sarif-file|json-stderr|json|json-Datei" gemaach, wou Optiounen mat "json" zu enger GCC-spezifescher Variant vum JSON-Format resultéieren. .
  • Implementéiert e puer Funktiounen, déi am C23 C Standard definéiert sinn, sou wéi d'Nullptr Konstant fir Nullpointer ze definéieren, d'Benotzung vu variadic Lëschte vereinfachen, d'Fäegkeete vun Opzielungen auszebauen, d'noreturn Attribut, erlaabt d'Benotzung vu constexpr an Auto beim Definéieren vun Objeten, den Typ vun an typeof_unqual, nei Schlësselwierder alignas, alignof, bool, falsch, static_assert, thread_local a wouer, wouduerch eidel Klammern während der Initialiséierung spezifizéiert ginn.
  • Implementéiert e puer Funktiounen, déi am C++23 Standard definéiert sinn, sou wéi d'Fäegkeet Marken um Enn vu zesummegesate Ausdréck ze setzen, Kompatibilitéit mam char8_t Typ, der #warning Preprocessor Direktiv, ofgrenzt (\u{}, \o{}, \x{}) an benannt ('\N{LATIN CAPITAL LETTER A}') Fluchsequenzen, statesche Bedreiwer(), statesche Bedreiwer[], Gläichheetsbedreiwer bannent Ausdréck, Eliminatioun vun e puer Restriktiounen op d'Benotzung vu constexpr, Ënnerstëtzung fir UTF -8 an Quelltexter.
  • libstdc++ huet experimentell Ënnerstëtzung fir C++20 an C++23 Standards verbessert, zum Beispill Header Datei Ënnerstëtzung an std :: Format, erweidert Header Fichier Kënnen , zousätzlech Floating Point Typen bäigefüügt, Headerdateien ëmgesat An .
  • Nei Funktiounsattributer bäigefüügt fir ze dokumentéieren datt e Dateideskriptor an enger ganzer Variabel passéiert ass: "__attribute__((fd_arg(N)))", "__attribute__((fd_arg_read(N)))" an "__attribute__((fd_arg_write(N)) )" Déi spezifizéiert Attributer kënnen an engem statesche Analysator (-fanalyzer) benotzt ginn fir falsch Operatioun mat Dateideskriptoren z'entdecken.
  • En neit Attribut bäigefüügt "__attribute__ ((assume (EXPR)))", mat deem Dir de Compiler soen datt den Ausdrock richteg ass an de Compiler kann dës Tatsaach benotzen ouni den Ausdrock ze evaluéieren.
  • "-fstrict-flex-arrays=[level]" Fändel bäigefüügt fir Verhalen ze wielen beim Ëmgank mat flexibelen Array-Elementer a Strukturen (Flexible Array Members, eng Array vun onbestëmmter Gréisst um Enn vun enger Struktur, zum Beispill, "int b[]" ).
  • "-Wenum-int-mismatch" Fändel bäigefüügt fir ze warnen wann et e Mëssverständnis tëscht engem Enum-Typ an engem Integer-Typ ass.
  • De Frontend fir d'Fortran Sprooch ënnerstëtzt d'Finaliséierung voll.
  • Am Frontend fir d'Go Sprooch ass Ënnerstëtzung fir generesch Funktiounen an Typen (Generik) bäigefüügt, a Kompatibilitéit mat Packagen fir d'Go Sprooch 1.18 ass gesuergt.
  • De Backend fir d'AARch64 Architektur ënnerstëtzt CPU Ampere-1A (ampere1a), Arm Cortex-A715 (cortex-a715), Arm Cortex-X1C (cortex-x1c), Arm Cortex-X3 (cortex-x3) an Arm Neoverse V2 (neoverse) -v2). Zousätzlech Ënnerstëtzung fir "armv9.1-a", "armv9.2-a" an "armv9.3-a" Argumenter fir d'Optioun "-march=". Zousätzlech Ënnerstëtzung fir FEAT_LRCPC, FEAT_CSSC an FEAT_LSE2 Prozessor Extensiounen.
  • Ënnerstëtzung fir CPU STAR-MC1 (Star-mc1), Arm Cortex-X1C (cortex-x1c) an Arm Cortex-M85 (Cortex-m85) gouf op de Backend fir d'ARM Architektur bäigefüügt.
  • De Backend fir x86 Architektur füügt Ënnerstëtzung fir Intel Raptor Lake, Meteor Lake, Sierra Forest, Grand Ridge, Emerald Rapids, Granite Rapids Prozessoren, souwéi AMD Zen 4 (znver4) Prozessoren. D'Instruktiounsset Architekturverlängerungen AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT, CMPccXADD, AMX-FP16, PREFETCHI, RAO-INT an AMX-COMPLEX, proposéiert an Intel Prozessoren, goufen ëmgesat. Fir C an C++ Sproochen op SSE2 Systemer gëtt den __bf16 Typ geliwwert.
  • De Code Generatioun Backend fir AMD Radeon GPUs (GCN) enthält d'Fäegkeet AMD Instinct MI200 Beschleuniger ze benotzen fir d'OpenMP / OpenACC Leeschtung ze verbesseren. Verbesserte Vektoriséierung mat SIMD Instruktiounen.
  • D'Backend Fäegkeeten fir d'LoongArch Plattform sinn wesentlech erweidert.
  • Am Backend fir d'RISC-V Architektur ass Ënnerstëtzung fir den T-Head's XuanTie C906 (thead-c906) CPU bäigefüügt. Ënnerstëtzung fir Vektorprozessoren definéiert an der RISC-V Vector Extension Intrinsic 0.11 Spezifizéierung gouf implementéiert. Zousätzlech Ënnerstëtzung fir 30 Extensiounen op d'RISC-V Spezifizéierung.
  • Generéiere vun gemeinsamen Objekter mat der -shared Optioun stoppt d'Startupcode ze addéieren nodeems se e Floating Point Ëmfeld bäigefüügt hunn, wann d'Ofast, -ffast-math oder -funsafe-math-Optimisatiounen aktivéiert sinn.
  • Ënnerstëtzung fir den DWARF Debug Format ass a bal all Konfiguratiounen ëmgesat.
  • D'Optioun "-gz = zstd" bäigefüügt fir Debugging Informatioun mam Zstandard Algorithmus ze kompriméieren. Ënnerstëtzung fir d'legacy "-gz=zlib-gnu" Debugging Kompressiounsmodus gouf ofgeschaaft.
  • Zousätzlech Ënnerstëtzung fir OpenMP 5.2 (Open Multi-Processing) a weider Implementatioun vun den OpenMP 5.0 a 5.1 Standarden, déi APIen a Methoden definéieren fir parallel Programméierungsmethoden op Multi-Core an Hybrid (CPU + GPU / DSP) Systemer mat gemeinsame Gedächtnis anzesetzen an Vectorization Unitéiten (SIMD).
  • Ënnerstëtzung fir den legacy "STABS" Debugging Informatiounsspeicherformat (aktivéiert mat den -gstabs an -gxcoff Optiounen), erstallt an den 1980er an am dbx Debugger benotzt, gouf gestoppt.
  • Ënnerstëtzung fir Solaris 11.3 gouf ofgeschaaft (Code fir dës Plattform z'ënnerstëtzen gëtt an enger zukünfteg Verëffentlechung geläscht).

Source: opennet.ru

Setzt e Commentaire