Ukukhishwa kwe-GCC 13 compiler suite

Ngemva konyaka wokuthuthukiswa, ukukhululwa kwe-GCC 13.1 compiler suite yamahhala kukhululiwe, ukukhishwa kokuqala okubalulekile egatsheni elisha le-GCC 13.x. Ngaphansi kohlelo olusha lwezinombolo zokukhishwa, inguqulo 13.0 yasetshenziswa ngesikhathi sokuthuthukiswa, futhi ngaphambi nje kokukhululwa kwe-GCC 13.1, igatsha le-GCC 14.0 lase lifakwe imfoloko, lapho kuzokwakhiwa khona ukukhishwa okubalulekile okulandelayo kwe-GCC 14.1.

Izinguquko eziyinhloko:

  • I-GCC yamukele isisekelo sezinhlelo zokwakha ngolimi lokuhlela lwe-Modula-2. Isekela ikhodi yokwakha evumelana nezilimi zesigodi ze-PIM2, PIM3, ne-PIM4, kanye nezinga le-ISO elamukelwayo lalolo limi.
  • Isendlalelo sokusetshenziswa kwe-Rust language compiler elungiselelwe iphrojekthi ye-gccrs (GCC Rust) yengezwe esihlahleni somthombo we-GCC. Ngokubuka kwamanje, i-forntend imakwe njengesivivinyo futhi ikhutshazwe ngokuzenzakalela. Uma indawo engaphambili isilungile (okulindeleke ekukhishweni okulandelayo), ikhithi yamathuluzi evamile ye-GCC ingasetshenziswa ukuhlanganisa izinhlelo ze-Rust ngaphandle kwesidingo sokufaka i-rustc compiler eyakhelwe kusetshenziswa ukuthuthukiswa kwe-LLVM.
  • I-Link-in-Step Optimization (LTO) yengeza usekelo lweseva yomsebenzi (i-jobserver) enakekelwa iphrojekthi ye-GNU make ukuze kuthuthukiswe ukusebenza kokwakha okuhambisanayo kuzo zonke izintambo eziningi. Ku-GCC, i-jobserver isetshenziselwa ukufanisa umsebenzi ngesikhathi sokuthuthukisa i-LTO kumongo walo lonke uhlelo (i-WPA, Ukuhlaziywa Kohlelo Lonke). Amapayipi aqanjwe igama (--jobserver-style=fifo) asetshenziswa ngokuzenzakalelayo ukuze ahlanganyele nomsebenzisi.
  • I-static analyzer (-fanalyzer) inikezela ngokuhlolwa okusha okungu-20 kokuxilonga, okuhlanganisa "-I-Wanalyzer-out-of-bounds", "-Wanalyzer-allocation-size", "-Wanalyzer-deref-before-check", "-Wanalyzer- infinite -i-recursion" -I-Wanalyzer-jump-through-null", "-Wanalyzer-va-list-leak".
  • Amandla okukhipha ukuxilongwa ngefomethi ye-SARIF esuselwe ku-JSON asetshenzisiwe. Ifomethi entsha ingasetshenziselwa ukuthola imiphumela yokuhlaziya emile (GCC -fanalyzer), kanye nokuthola ulwazi mayelana nezixwayiso namaphutha. Ukunika amandla kwenziwa ngenketho ethi "-fdiagnostics-format=sarif-stderr|sarif-file|json-stderr|json|json-file", lapho izinketho ezine-"json" ziphumela ekukhishweni kokuhlukile kwe-GCC yefomethi ye-JSON. .
  • Isebenzise ezinye izici ezichazwe kuzinga le-C23 C, njenge-nullptr engaguquki yokuchaza izikhombi ezingenalutho, okwenza kube lula ukusebenzisa uhlu olunenani eliguquguqukayo lama-agumenti (i-variadic), inwebe amandla e-enum, imfanelo ye-noreturn, okuvumela ukusetshenziswa i-constexpr ne-auto lapho ichaza izinto, uhlobo nohlobo_lokungalingani, amagama angukhiye amasha ama-alignas, alignof, bool, amanga, static_assert, thread_local kanye neqiniso, vumela abakaki abangenalutho ekuqaliseni.
  • Kusetshenziswe ezinye zezici ezichazwe ezingeni le-C++23, elifana nekhono lokubeka amamaki ekugcineni kwezinkulumo ezimbaxambili, ukuhambisana nohlobo lwe-char8_t, umyalo we-preprocessor ongu-#warning, onqunyelwe ngu-(\u{}, \o {}, \x{}), futhi yaqanjwa ngokuthi ('\N{LATIN LETTER A}') ukulandelana kokuphunyuka, u-opharetha omile(), u-opharetha omile[], u-opharetha olinganayo phakathi kwezinkulumo, ngaphandle kweminye imikhawulo ekusetshenzisweni kwe-constexpr , Ukusekelwa kwe-UTF-8 emibhalweni yomthombo.
  • Ukusekelwa kokuhlola okuthuthukisiwe kwamazinga e-C++20 kanye ne-C++23 ku-libstdc++, njengokwengeza ukusekelwa kwefayela elingunhlokweni kanye ne-std::format, amandla wefayela elinhlokweni elinwetshiwe , izinhlobo zamaphuzu antantayo ezengeziwe zengeziwe, amafayela anhlokweni asetshenzisiwe Futhi .
  • Kwengezwe izici zokusebenza ezintsha kudokhumenti ukuthi isichazi sefayela siphasiswe ngenombolo ephelele: "__attribute__(((fd_arg(N))))", "__attribute__((fd_arg_read(N))))", kanye "__attribute__((fd_arg_write(N) ))". Izibaluli ezishiwo zingasetshenziswa kusihlaziyi esimile (-fanalyzer) ukuze kutholwe umsebenzi ongalungile ngezichazi zefayela.
  • Isibaluli esisha "__attribute__((thatha (EXPR)))" sengeziwe, ongatshela ngaso umdidiyeli ukuthi isisho siyiqiniso futhi umdidiyeli angasebenzisa leli qiniso ngaphandle kokuhlola inkulumo.
  • Kwengezwe ifulegi elithi "-fstrict-flex-arrays=[level]" ukuze ukhethe ukuziphatha lapho kucutshungulwa ingxenye yamalungu afanayo eguquguqukayo ezakhiweni (Amalungu E-Flexible Array, uhlu lobukhulu obungenamkhawulo ekugcineni kwesakhiwo, isibonelo, "int b[] ").
  • Kwengezwe ifulegi elithi "-Wenum-int-mismatch" ukuze kukhishwe izexwayiso uma kunokungafani phakathi kohlobo olubaliwe kanye nohlobo oluphelele.
  • I-Fortran front-end inokusekelwa okugcwele kokuphothulwa.
  • Ukusekelwa kwemisebenzi ejwayelekile nezinhlobo (amajenerikhi) kwengezwe ngaphambili kulimi lwe-Go, futhi ukuhambisana namaphakheji olimi lwe-Go 1.18 sekuqinisekisiwe.
  • I-AArch64 backend isekela i-CPU Ampere-1A (ampere1a), i-Arm Cortex-A715 (cortex-a715), i-Arm Cortex-X1C (cortex-x1c), i-Arm Cortex-X3 (i-cortex-x3), ne-Arm Neoverse V2 (neoverse -v2) . Usekelo lwezimpikiswano ze-"armv9.1-a", "armv9.2-a", kanye "ne-armv9.3-a" zengezwe kunketho ethi "-march=". Usekelo olungeziwe lwezandiso zephrosesa ze-FEAT_LRCPC, FEAT_CSSC kanye ne-FEAT_LSE2.
  • Usekelo lwama-STAR-MC1 (inkanyezi-mc1), i-Arm Cortex-X1C (cortex-x1c), kanye ne-Arm Cortex-M85 (cortex-m85) CPUs kwengezwe kungemuva lesakhiwo se-ARM.
  • Ukusekelwa kwe-Intel Raptor Lake, i-Meteor Lake, i-Sierra Forest, i-Grand Ridge, i-Emerald Rapids, i-Granite Rapids, nama-AMD Zen 86 (znver4) processors kwengezwe ku-x4 backend. Izandiso zesakhiwo sesethi yemiyalo ye-AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT, CMPccXADD, AMX-FP16, PREFETCHI, RAO-INT, kanye ne-AMX-COMPLEX ehlongozwayo kuma-Intel processors sezisetshenzisiwe. Ku-C no-C++ kumasistimu ane-SSE2, uhlobo lwe-__bf16 lunikeziwe.
  • I-backend yokukhiqiza amakhodi ye-AMD Radeon GPUs (GCN) isebenzisa ikhono lokusebenzisa ama-accelerator e-AMD Instinct MI200 ukuthuthukisa ukusebenza kwe-OpenMP/OpenACC. I-vectorization ethuthukisiwe kusetshenziswa imiyalelo ye-SIMD.
  • Amakhono angemuva andwe ngokuphawulekayo eplathifomu ye-LoongArch.
  • Usekelo olungeziwe lwe-CPU T-Head's XuanTie C906 (ikhanda-c906) ku-backend ye-RISC-V. Usekelo olusetshenziswayo lwezibambi ze-vector ezichazwe ekucacisweni kwe-RISC-V Vector Extension Intrinsic 0.11. Usekelo olungeziwe lwezandiso zokucaciswa kwe-30 RISC-V.
  • Lapho kukhiqizwa izinto ezabiwe ngenketho ethi "-kwabelwane", ikhodi yokuqala ayisangezwa ngemva kokwengeza indawo entantayo uma ukulungiselelwa kwe-"-Ofast", "-ffast-math", noma "-funsafe-math-optimizations" kunikwe amandla. .
  • Ukusekelwa kwefomethi yokususa iphutha ye-DWARF kuqaliswa cishe kukho konke ukulungiselelwa.
  • Kwengezwe inketho ethi "-gz=zstd" ukuze ucindezele ulwazi lokususa iphutha usebenzisa i-algorithm ye-Zstandard. Kususwe usekelo lwemodi yokucindezelwa yolwazi lokususa iphutha eyehlisiwe "-gz=zlib-gnu".
  • Usekelo lokuqala lwe-OpenMP 5.2 (Open Multi-Processing) lwengeziwe futhi ukuqaliswa kwamazinga e-OpenMP 5.0 kanye no-5.1 kuqhubekile, kuchaza ama-API nezindlela zokusebenzisa izindlela zokuhlela ezihambisanayo ezinhlelweni eziningi eziyisisekelo kanye ne-hybrid (CPU + GPU / DSP) inkumbulo eyabiwe kanye namayunithi e-vectorization (i-SIMD).
  • Usekelo lwefomethi yesitoreji solwazi lokususa iphutha elithi "STABS" (enikwe amandla izinketho ze- -gstabs kanye ne -gxcoff), edalwe ngeminyaka yawo-1980s futhi yasetshenziswa kusilungisi sephutha se-dbx, siyekwa.
  • Usekelo oluhoxisiwe lwe-Solaris 11.3 (ikhodi yokusekela le nkundla izosuswa ekukhishweni okuzayo).

Source: opennet.ru

Engeza amazwana