Ukukhishwa kwe-GCC 12 compiler suite

Ngemva konyaka wokuthuthukiswa, i-compiler suite yamahhala i-GCC 12.1 isikhishiwe, ukukhishwa kokuqala okubalulekile egatsheni elisha le-GCC 12.x. Ngokuvumelana nohlelo olusha lwezinombolo zokukhishwa, inguqulo 12.0 yasetshenziswa enqubweni yokuthuthukiswa, futhi ngaphambi nje kokukhishwa kwe-GCC 12.1, igatsha le-GCC 13.0 lase livele lihlukene, ngesisekelo okwakuzokhishwa ngalo okukhulu okulandelayo, i-GCC 13.1. kwakheka. NgoMeyi 23, iphrojekthi izogubha iminyaka engama-35 kusukela kwasungulwa uhlelo lokuqala lwe-GCC.

Izinguquko eziyinhloko:

  • Ukwesekwa okwengeziwe kwefomethi yokulungisa iphutha ye-CTF (Ifomethi Yohlobo Oluhlangene), enikeza isitoreji esihlangene solwazi olumayelana nezinhlobo C, ukuxhumana phakathi kwemisebenzi nezimpawu zokususa iphutha. Uma ishumekwe ezintweni ze-ELF, ifomethi ivumela ukusetshenziswa kwamathebula ezinhlamvu ze-EFL ukugwema impinda yedatha.
  • Usekelo lwefomethi ye-"STABS" yokususa iphutha yokugcina imininingwane, eyakhiwe ngeminyaka yawo-1980s, yehlisiwe.
  • Umsebenzi uyaqhubeka nokwandisa ukwesekwa kwamazinga esikhathi esizayo e-C2X kanye ne-C++23 yezilimi ze-C ne-C++. Ngokwesibonelo, ukwesekwa kwenkulumo ethi “uma i-consteval” yengeziwe; kuvunyelwe ukusebenzisa okuzenzakalelayo kuzimpikiswano zomsebenzi (“f(auto(g()))”); ukusetshenziswa kweziguquguqukayo ezingezona ezingokoqobo, i-goto namalebula kuvunyelwe emisebenzini emenyezelwe njenge-constexpr; ukwesekwa okwengeziwe ko-opharetha benkomba ye-multidimensional[]; uma, ngenxa kanye nokushintsha, amandla amabhulokhi okuqalisa anwetshiwe (“for (ukusebenzisa i-T = int; T e: v)”).
  • I-C++ Standard Library ithuthukise ukusekelwa kwezigaba zokuhlola zamazinga e-C++20 kanye ne-C++23. Kwengezwe usekelo lwe-std::move_only_function, , std::basic_string::resize_and_overwrite, , kanye ne-std::invoke_r. Ivunyelwe ukusebenzisa okuthi std::unique_ptr, std::vector, std::basic_string, std::optional kanye ne-std::inguquko emisebenzini ye-constexpr.
  • Ingaphambili le-Fortran linikeza ukwesekwa okugcwele kokucaciswa kwe-TS 29113, okuchaza amakhono okuqinisekisa ukuphatheka phakathi kwekhodi ye-Fortran ne-C.
  • Usekelo olungeziwe lwesandiso esithi __builtin_shufflevector(vec1, vec2, index1, index2, ...) esingezwe ngaphambilini ku-Clang, esinikeza ucingo olulodwa ukuze kwenziwe ukushova kwevekhtha okuvamile nokushova imisebenzi.
  • Uma usebenzisa izinga lokulungiselela le-"-O2", i-vectorization ivulwa ngokuzenzakalelayo (i- -ftree-vectorize kanye ne -fvect-cost-model=izindlela ezishibhile kakhulu zinikwe amandla). Imodeli eshibhe kakhulu ivumela i-vectorization kuphela uma ikhodi ye-vector ingangena esikhundleni ngokuphelele sekhodi yesikala eyenziwa i-vector.
  • Kwengezwe imodi ethi "-ftrivial-auto-var-init" ukuze unike amandla ukuqaliswa okucacile kwezinto eziguquguqukayo kusitaki ukuze kulandelelwe izinkinga futhi kuvinjwe ubungozi obuhlobene nokusetshenziswa kwezinto eziguquguqukayo ezingaqalisiwe.
  • Ezilwimini ezingu-C no-C++, umsebenzi owakhelwe ngaphakathi othi __builtin_dynamic_object_size ungeziwe ukuze kunqunywe usayizi wento, ohambisana nomsebenzi ofanayo ovela ku-Clang.
  • Ezilwimini ezingu-C no-C++, usekelo lwesibaluli “sokungatholakali” sengeziwe (ngokwesibonelo, ungakwazi ukumaka imisebenzi ezodala iphutha uma uzama ukuyisebenzisa).
  • Ezilwimini ezithi C no-C++, usekelo lweziqondiso zokucubungula kusengaphambili okuthi “#elifdef” kanye “#elifndef” kwengeziwe.
  • Kwengezwe ifulege elithi "-Wbidi-chars" ukuze kuboniswe isexwayiso uma izinhlamvu ze-UTF-8 zisetshenziswa ngokungalungile, kushintsha indlela okubonakala ngayo umbhalo oqondiswe kabili.
  • Kwengezwe ifulegi elithi "-Warray-compare" ukuze kuboniswe isexwayiso lapho izama ukuqhathanisa ama-operand amabili abhekisela kumalungu afanayo.
  • Ukuqaliswa kwamazinga e-OpenMP 5.0 kanye ne-5.1 (Open Multi-Processing), achaza i-API nezindlela zokusebenzisa izindlela zokuhlela ezihambisanayo ezinhlelweni ze-multi-core kanye ne-hybrid (CPU+GPU/DSP) ezinememori eyabiwe kanye namayunithi e-vectorization (SIMD) ,kuqhubekile.
  • Ukuqaliswa okuthuthukisiwe kokucaciswa kwezinhlelo ezihambisanayo ze-OpenACC 2.6, ezichaza amathuluzi okukhipha imisebenzi kuma-GPU namaphrosesa akhethekile afana ne-NVIDIA PTX.
  • Ukusekelwa kwemiyalo enwetshiwe i-Intel AVX86-FP512 kanye nohlobo lwe-_Float16 lwengeziwe ku-backend yokukhiqiza ikhodi ye-architecture ye-x16.
  • Ngokwakheka kwe-x86, isivikelo sengeziwe ngokumelene nokuba sengozini kumaphrosesa okubangelwa ukukhishwa okuqagelayo kwemiyalelo ngemva kwemisebenzi yokugxuma eya phambili engenamibandela. Inkinga yenzeka ngenxa yokucutshungulwa kwangaphambili kwemiyalelo ngokushesha kulandela imiyalelo yegatsha kumemori (SLS, Straight Line Speculation). Ukuze unike amandla ukuvikela, inketho ethi “-mharden-sls” iyaphakanyiswa.
  • Ukutholwa okungeziwe kokusetshenziswa kwezinto eziguquguqukayo ezingaqalisiwe kumhlaziyi omile wokuhlola. Kwengezwe usekelo lokuqala lokuhlaziya ikhodi yomhlangano ekufakweni okusemgqeni. Ukulandelela inkumbulo okuthuthukisiwe. Ikhodi yokucubungula izinkulumo zokushintsha isibhalwe kabusha.
  • Kwengezwe amakholi amasha angu-30 ku-libgccjit, umtapo wolwazi okwabelwana ngawo wokushumeka umshini wokukhiqiza ikhodi kwezinye izinqubo futhi uyisebenzisele i-JIT ukuhlanganisa i-bytecode ibe ikhodi yomshini.
  • Ukusekelwa kwendlela ye-CO-RE (Compile Once - Run Everywhere) yengezwe ngemuva ukuze kukhiqizwe i-BPF bytecode, ekuvumela ukuthi uhlanganise ikhodi yezinhlelo ze-eBPF ze-Linux kernel kanye kuphela futhi usebenzise isilayishi esikhethekile esivumelana nezimo. Uhlelo olulayishiwe ku-kernel yamanje kanye nefomethi yezinhlobo ze-BPF). I-CO-RE ixazulula inkinga yokuphatheka kwezinhlelo ze-eBPF ezihlanganisiwe, ebezingasetshenziswa kuphela enguqulweni ye-kernel ezahlanganiselwa yona, njengoba isimo sezakhi ezinhlakeni zedatha sishintsha sisuka enguqulweni siye kwesinye.
  • I-backend ye-RISC-V yengeza ukusekelwa kwezandiso ezintsha ze-architecture set zba, zbb, zbc kanye ne-zbs, kanye nezandiso ze-ISA ze-vector kanye nokusebenza kwe-cryptographic scalar. Ngokuzenzakalelayo, usekelo lokucaciswa kwe-RISC-V ISA 20191213 lunikeziwe. Ifulegi -mtune=thead-c906 lengeziwe ukuze kunikwe amandla ukulungiselelwa kwe-T-HEAD c906 cores.
  • Usekelo lohlobo lwe-__int128_t/integer(kind=16) lwengezwe ekugcineni kwekhodi yokukhiqiza ama-AMD GPU asekelwe ku-GCN microarchitecture. Kungenzeka ukusebenzisa amaqembu omsebenzi afika kwangu-40 ngeyunithi ngayinye yekhompuyutha (CU) kanye nemingcele yemiyalelo efika kweziyi-16 (i-wavefront, isethi yemicu ekhishwe ngokuhambisana Injini ye-SIMD) iqembu ngalinye. Ngaphambilini, munye kuphela unqenqema lwemiyalo ngeCU ngalinye olwaluvunyelwe.
  • I-backend ye-NVPTX, eklanyelwe ukukhiqiza ikhodi kusetshenziswa isethi yemithetho ye-NVIDIA PTX (Parallel Thread Execution), yengeze ikhono lokusebenzisa amafulegi okuthi “-march”, “-mptx” kanye “no-march-map”. Usekelo olusetshenzisiwe lwe-PTX ISA sm_53, sm_70, sm_75 kanye ne-sm_80. I-architecture ezenzakalelayo ithi sm_30.
  • Ngasemuva kumaphrosesa we-PowerPC / PowerPC64 / RS6000, ukusetshenziswa kwemisebenzi eyakhelwe ngaphakathi kubhalwe kabusha. Imisebenzi eyakhelwe ngaphakathi __builtin_get_texasr, __builtin_get_texasru, __builtin_get_tfhar, __builtin_get_tfiar, __builtin_set_texasr, __builtin_set_texasru, __builtin_get_tfhar, __builtin_get_tfiar, __builtin_set_texasr, __builtin_set_texasru, __builtin_builtin_set_builtin_set_builtin.
  • Usekelo lwe-Arm Ampere-64 (-mcpu/-mtune ampere1), i-Arm Cortex-A1 (cortex-a510), i-Arm Cortex-A510 (cortex-a710) ne-Arm Cortex-X710 (cortex- x2). Usekelo olungeziwe lwezinketho ezintsha zezakhiwo ze-ARMv2 ezizosetshenziswa ngenketho ethi "-march": armv8-a, armv8.7-a, armv8.8-a. Ukuqaliswa okungeziwe kwemisebenzi ye-C eyakhelwe kumhlanganisi (I-Intrinsics) yokulayisha i-athomu nokulondoloza idatha kumemori, ngokusekelwe ekusetshenzisweni kwemiyalelo ye-ARM enwetshiwe (ls9). Ukwesekwa okwengeziwe kokusheshisa imisebenzi ye-memcpy, memmove kanye ne-memset kusetshenziswa isandiso se-ARM ye-mopsoption.
  • Kwengezwe imodi yokuhlola entsha ethi “-fsanitize=shadow-call-stack” (ShadowCallStack), okwamanje etholakala kuphela kuzakhiwo ze-AArch64 futhi isebenza lapho kwakhiwa ikhodi ngenketho ethi “-ffixed-r18”. Imodi ihlinzeka ngokuvikeleka ekubhaleni phezu kwekheli lokubuyisela emsebenzini esimweni sokuchichima kwebhafa kusitaki. Ingqikithi yokuvikela iwukulondoloza ikheli lokubuyisela kusitaki “sethunzi” esihlukile ngemva kokudlulisa isilawuli kumsebenzi kanye nokukhipha leli kheli ngaphambi kokuphuma emsebenzini.

Source: opennet.ru

Engeza amazwana