Utjefte fan 'e GCC 13-kompilersuite

Nei in jier fan ûntwikkeling is de frijlitting fan 'e fergese GCC 13.1-kompilersuite frijlitten, de earste wichtige release yn' e nije GCC 13.x-tûke. Under it nije nûmeringskema foar frijlitting waard ferzje 13.0 brûkt tidens ûntwikkeling, en koart foar de frijlitting fan GCC 13.1 wie de GCC 14.0-tûke al forkeard, wêrfan de folgjende wichtige release fan GCC 14.1 sil wurde foarme.

Grutte feroaringen:

  • De GCC hat in frontend oannommen foar it bouwen fan programma's yn 'e Modula-2 programmeartaal. It stipet bouwkoade dy't oerienkomt mei de PIM2-, PIM3- en PIM4-dialekten, lykas ek de akseptearre ISO-standert foar dy taal.
  • In frontend mei de ymplemintaasje fan de Rust-taalkompiler taret troch it gccrs-projekt (GCC Rust) is tafoege oan de GCC-boarnebeam. Yn 'e hjoeddeistige werjefte is de forntend markearre as eksperiminteel en standert útskeakele. Sadree't de frontend klear is (ferwachte yn 'e folgjende release), kin de standert GCC toolkit brûkt wurde om Rust-programma's te kompilearjen sûnder de needsaak om de rustc-kompiler te ynstallearjen boud mei LLVM-ûntwikkelingen.
  • Link-in-Step Optimization (LTO) foeget stipe ta foar in baanserver (jobserver) ûnderhâlden troch it GNU make-projekt om de útfiering fan parallelle build oer meardere threaden te optimalisearjen. Yn GCC wurdt de jobserver brûkt om wurk te parallelisearjen tidens LTO-optimisaasje yn 'e kontekst fan it hiele programma (WPA, Whole-program Analysis). Neamde pipes (--jobserver-style=fifo) wurde standert brûkt om ynteraksje mei de jobserver.
  • De statyske analysator (-fanalyzer) biedt 20 nije diagnostyske kontrôles, ynklusyf "-Wanalyzer-out-of-bounds", "-Wanalyzer-allocation-size", "-Wanalyzer-deref-before-check", "-Wanalyzer- infinite -recursion" -Wanalyzer-jump-through-null", "-Wanalyzer-va-list-leak".
  • De mooglikheid om diagnostyk út te fieren yn SARIF-formaat basearre op JSON is ymplementearre. It nije formaat kin brûkt wurde om statyske analyseresultaten te krijen (GCC -fanalyzer), en ek om ynformaasje te krijen oer warskôgings en flaters. It ynskeakeljen wurdt dien mei de opsje "-fdiagnostics-format=sarif-stderr|sarif-file|json-stderr|json|json-file", wêrby't opsjes mei "json" resultearje yn útfier yn in GCC-spesifike fariant fan it JSON-formaat .
  • Implementearre guon funksjes definieare yn 'e C23 C-standert, lykas de nullptr-konstante foar it definiearjen fan nul-oanwizers, wêrtroch it makliker is om listen te brûken mei in fariabele oantal arguminten (variadic), it útwreidzjen fan de mooglikheden fan enums, it noreturn-attribút, wêrtroch it gebrûk fan constexpr en auto by it definiearjen fan objekten, it typeof en typeof_unqual, nije kaaiwurden alignas, alignof, bool, false, static_assert, thread_local en true, tastean lege heakjes by inisjalisaasje.
  • Guon funksjes definieare yn 'e C++23-standert ymplementearre, lykas de mooglikheid om marken te pleatsen oan' e ein fan gearstalde útdrukkingen, kompatibiliteit mei it char8_t-type, de #warning preprocessor-rjochtline, skieden troch (\u{}, \o{} , \x{}), en neamd ('\N{LATYN CAPITAL LETTER A}') escape-sekwinsjes, statyske operator(), statyske operator[], gelikensoperator binnen útdrukkingen, útsûndering fan guon beheiningen op it gebrûk fan constexpr, stipe foar UTF-8 yn boarneteksten.
  • Ferbettere eksperimintele stipe foar C++20- en C++23-standerts yn libstdc++, lykas it tafoegjen fan header-bestânstipe en std :: opmaak, útwreide header triem mooglikheden , ekstra driuwende punttypen tafoege, koptekstbestannen ymplementearre En .
  • Nije funksje-attributen tafoege om te dokumintearjen dat in bestânbeskriuwing wurdt trochjûn yn in hiel getal fariabele: "__attribute__((fd_arg(N)))", "__attribute__((fd_arg_read(N)))", en "__attribute__((fd_arg_write(N) )) ". De oantsjutte attributen kinne brûkt wurde yn in statyske analysator (-fanalyzer) om ferkeard wurk mei triembeskriuwers te detektearjen.
  • In nij attribút "__attribute__((assume(EXPR)))" is tafoege, wêrmei jo de gearstaller fertelle kinne dat de útdrukking wier is en de gearstaller kin dit feit brûke sûnder de útdrukking te evaluearjen.
  • Flag "-fstrict-flex-arrays=[nivo]" tafoege om gedrach te selektearjen by it ferwurkjen fan in fleksibel array-elemint yn struktueren (Flexible Array Members, in array fan ûnbepaalde grutte oan 'e ein fan' e struktuer, bygelyks "int b[] ").
  • Flagge "-Wenum-int-mismatch" tafoege om warskôgings út te jaan as der in mismatch is tusken in opnomd type en in hiel getal type.
  • De Fortran front-end hat folsleine stipe foar finalisaasje.
  • Stipe foar generyske funksjes en typen (generics) is tafoege oan it frontend foar de Go-taal, en kompatibiliteit mei pakketten foar de Go 1.18-taal is garandearre.
  • AArch64-backend stipet CPU Ampere-1A (ampere1a), Arm Cortex-A715 (cortex-a715), Arm Cortex-X1C (cortex-x1c), Arm Cortex-X3 (cortex-x3), en Arm Neoverse V2 (neoverse -v2) . Stipe foar "armv9.1-a", "armv9.2-a", en "armv9.3-a" arguminten is tafoege oan de "-march=" opsje. Stipe tafoege foar FEAT_LRCPC, FEAT_CSSC en FEAT_LSE2 prosessor tafoegings.
  • Stipe foar STAR-MC1 (star-mc1), Arm Cortex-X1C (cortex-x1c), en Arm Cortex-M85 (cortex-m85) CPU's is tafoege oan 'e ARM-arsjitektuer-backend.
  • Stipe foar Intel Raptor Lake, Meteor Lake, Sierra Forest, Grand Ridge, Emerald Rapids, Granite Rapids, en AMD Zen 86 (znver4) processors is tafoege oan it x4-backend. De AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT, CMPccXADD, AMX-FP16, PREFETCHI, RAO-INT, en AMX-COMPLEX ynstruksjeset-arsjitektuer-útwreidings foarsteld yn Intel-processors binne ymplementearre. Foar C en C++ op systemen mei SSE2 wurdt it __bf16-type foarsjoen.
  • De koade-generaasje-backend foar AMD Radeon GPU's (GCN) ymplementearret de mooglikheid om AMD Instinct MI200-accelerators te brûken om OpenMP / OpenACC-prestaasjes te ferbetterjen. Ferbettere vectorization mei help SIMD ynstruksjes.
  • Wichtich útwreide backend-mooglikheden foar it LoongArch-platfoarm.
  • Stipe tafoege foar CPU T-Head's XuanTie C906 (thead-c906) yn 'e RISC-V-backend. Implementearre stipe foar vector handlers definiearre yn de RISC-V Vector Extension Intrinsic 0.11 spesifikaasje. Stipe tafoege foar 30 RISC-V-spesifikaasjeútwreidings.
  • By it generearjen fan dielde objekten mei de "-shared" opsje, wurdt opstartkoade net mear tafoege nei it tafoegjen fan in driuwende-punt-omjouwing as de "-Ofast", "-ffast-math", of "-funsafe-math-optimizations" optimisaasjes binne ynskeakele .
  • Stipe foar it DWARF-debuggen-formaat wurdt ymplementearre yn hast alle konfiguraasjes.
  • Tafoege "-gz=zstd" opsje om debug-ynformaasje te komprimearjen mei it Zstandard-algoritme. Stipe fuortsmiten foar de ferâldere kompresjemodus foar debug-ynformaasje "-gz=zlib-gnu".
  • Inisjele stipe foar OpenMP 5.2 (Open Multi-Processing) is tafoege en de ymplemintaasje fan 'e OpenMP 5.0 en 5.1 noarmen is trochgien, API's en metoaden definieare foar it tapassen fan parallelle programmearringmetoaden op multi-core en hybride (CPU + GPU / DSP) systemen mei dielde ûnthâld en vectorization units (SIMD).
  • Stipe foar it legacy debug-ynformaasje-opslachformaat "STABS" (ynskeakele troch de -gstabs- en -gxcoff-opsjes), makke yn 'e 1980's en brûkt yn 'e dbx-debugger, is stopset.
  • Ferâldere stipe foar Solaris 11.3 (koade om dit platfoarm te stypjen sil yn in takomstige release fuortsmiten wurde).

Boarne: opennet.ru

Add a comment