Ukukhutshwa kwe-LLVM 21 yokuhlanganisa suite

Emva kweenyanga ezintandathu zophuhliso, ukukhutshwa kweprojekthi ye-LLVM 21.1.0 kuyaboniswa. Iphuhlisa izixhobo (abahlanganisi, abalungiseleli kunye nabavelisi beekhowudi) eziqulunqa iinkqubo zibe yi-bitcode ephakathi ye-RISC-njengemiyalelo ebonakalayo (inqanaba eliphantsi lomatshini wenyani kunye nenkqubo yokuphucula amanqanaba amaninzi). I-pseudocode eyenziweyo inokuguqulwa ibe yikhowudi yomatshini kwiqonga elijoliswe kuyo okanye lisetyenziswe ngumqambi we-JIT ukwenza imiyalelo yomatshini ngokuthe ngqo ngexesha lokwenziwa kweprogram. Ngokusekelwe kubuchwephesha be-LLVM, iprojekthi iphuhlisa i-Clang compiler, exhasa iC, C ++ kunye neelwimi zeprogram ye-Objective-C. Ukuqala ngesebe le-18.x, iprojekthi yatshintshela kwisikimu sokuvelisa inombolo entsha, ngokubhekiselele ekukhutshweni kwe-zero ("N.0") kusetyenziswa ngexesha lenkqubo yophuhliso, kwaye inguqu yokuqala ezinzileyo inikezelwa ngenombolo "N.1".

Uphuculo kwiClang 21 lubandakanya:

  • C++ iimpawu ezinxulumene:
    • Ngokufaniswa ne-GCC, ukukwazi ukusebenzisa intetho eqhubekayo kwi-assembler installer echazwe ngumyalelo we-"asm" uphunyeziwe: int foo() { asm((std::string_view("nop"))) ::: (std::string_view("memory"))); }
    • Kongezwe ukwahluka okwandisiweyo "okutsha" kunye "nokucima" amabinzana axhasa ingxabano "std::type_identity" ", apho unokuxela ulwazi malunga nodidi lwento inkumbulo eyabelwe yona okanye ikhululwe.
    • Kongezwe ukukwazi ukuvavanya imisebenzi ye-lambda ebamba izibophelelo ezicwangcisiweyo ngexesha lokudibanisa kumxholo wentetho eqhubekayo.
  • Iimpawu ezinxulumene nomgangatho wexesha elizayo we-C++2c (C++26):
    • Izibophelelo ezicwangcisiweyo ngoku zixhasa "..." isintaksi ukukhankanya iipakethi ezibamba inani eliseleyo leezakhi kulandelelwano lwesabelo. auto [x,y,z] = f(); // iinguqu x, y, z ziyakuqulatha izinto ezithathu ezibuyiswe ngu f(). auto [...xs] = f(); // ipakethe xs izakuqulatha zonke izinto ezibuyiswe ngu f(). auto [x, ...phumla] = f(); // x iya kuqulatha into yokuqala, kwaye ukuphumla kuya kuqulatha okuseleyo. auto [x, y, ...phumla] = f(); // x iya kuqulatha into yokuqala, y iya kuqulatha eyesibini, kwaye ukuphumla kuya kuqulatha eyesithathu. auto [x, ...phumla, z] = f(); // x iya kuqulatha eyokuqala, ukuphumla iya kuqulatha esesibini, kwaye u-z iya kuqulatha esesithathu.
    • Inkxaso eyongeziweyo ye "Trivial Relocatability" yeentlobo, evumela ukulungelelanisa ukuhamba kwezinto zodidi olunikiweyo ngokudibanisa kwimemori ngaphandle kokubiza abakhi okanye ababhubhisi. Iipropati memberwise_trivially_relocatable kunye memberwise_replaceable ziphunyezwe kwiiklasi, kunye trivially_relocate_at and trivially_relocate imisebenzi zongezwa kwizinga eliphantsi intshukumo enye okanye ngaphezulu izinto.
    • Ukukwazi ukusebenzisa ukubopha okucwangcisiweyo njengemeko kwi-if kunye nokutshintsha iingxelo.
    • Inkxaso iphunyeziwe ukuncamathisela owona msebenzi ungundoqo kwimodyuli yehlabathi kunye nokuchaza owona msebenzi uphambili kwiimodyuli ezinegama.
  • Izakhono ziphuhliselwa umgangatho weC2y wexesha elizayo:
    • Ukuziphatha okulungisiweyo okungachazwanga xa usebenzisa amabinzana angenanto kweminye imixholo, njena "(ukungabikho)(ukungabikho)1;".
    • Ivumelekile ukuba ingapheli ifayile yekhowudi yemvelaphi enombhalo omtsha womgca.
    • Kongezwe izimaphambili ezintsha zeoctal literals — 0o kunye no-0O, kunye ne-octal kunye ne-hexadecimal yolandelelwano lokubaleka "\o{...}" kunye \x{…}. Inkxaso yee-octal literals 0xxx iyekisiwe. Umzekelo, "0o123" kunye "\o{123}" endaweni ka"0123".
    • Kongezwe "_Countof" umsebenzisi ukumisela inani leezakhi kuluhlu. Iphinde yongezwe ifayile yeheader stdcountof.h, ichaza umahluko we "countof" macro ephunyezwe nge "_Countof".
  • Izakhono ezichazwe kumgangatho weC23 C:
    • Kuvumelekile ukuphinda uchaze iindidi zethegi (isakhiwo, imanyano, i-enum) ngaphakathi kweyunithi enye yokuguqulela ukuba iinkcazo eziphindaphindiweyo zilingana ngokwesakhiwo (inani elifanayo lamalungu, iindidi ezifanayo kunye namagama ethegi).
    • Ukusetyenziswa ngokulula kwezintlu ezahlukeneyo. Ivumelekile ukusebenzisa iparameter eyodwa yevariadic kudidi lwegama.
    • Kongezwe i-builtin ehambelana ne-GCC "__builtin_c23_va_start ()" ukuphucula ukuziphatha kokuxilongwa kwe-va_start () macro kwimo ye-C23.
  • Kwimowudi yokuhambelana yomqokeleli we-MSVC, umxeli ongaphakathi uvumelekile xa ubhengeza uhlobo lomsebenzi nge-typedef, umzekelo, "typedef int inline Foo(int);"
  • Isiqinisekiso "somda" sivumelekile kwiintlobo zoluhlu oluneziqalelo zesalathisi.
  • Izilumkiso zomqokeleli omtsha:
    • "-Wdefault-const-init-var" kunye "-Wdefault-const-init-field" -chonga izinto eziguquguqukayo ezinophawu kunye nemimandla echaziweyo ngaphandle kokuqaliswa okucacileyo.
    • "-Wimplicit-void-ptr-cast" - imveliso xa kukho uguqulo olucacileyo ukusuka kuhlobo "void*" ukuya kolunye uhlobo lwesalathisi.
    • "-Wc++-igama elingundoqo" - imveliso xa usebenzisa "C ++" amagama angundoqo njengezichongi ku "C".
    • "-Wc ++-hidden-decl" - ibona ukusetyenziswa kweentlobo zeethegi ezibonakalayo kwi-"C" kodwa zingabonakali kwi "C ++" ngenxa yemiqathango yobubanzi.
    • "-Wimplicit-int-enum-cast" - ibona uguqulo olungacacanga kwikhowudi ye-C ukusuka kwiintlobo ezipheleleyo ukuya kwiintlobo zobalo ezingahambelaniyo no "C++".
    • "I-Wtentative-definition-compat" - ukuxilongwa kweenkcazo ze-tentative kwi-C kunye neenkcazo ezininzi ezingahambelani ne-C ++.
    • "-Wunterinated-string-initialization" kunye ne "-Wc++-unterminated-string-initialization" - qaphela iimeko zokuqalisa ukusuka kumtya ocacileyo apho isahluli esinekhowudi engenanto ayinakugcinwa khona. Uphawu lwe-"nonstring" longeziwe kumacandelo amanqaku kunye nezinto eziguquguqukayo kwikhowudi engu-C ezingadingi unobumba ongekhoyo wokugqibela.
    • "-Wjump-misses-init" - ukuxilongwa kokutsiba nge-goto okanye ukutshintshela / ityala elitsiba ukuqaliswa kokuguquguquka kwendawo.
    • "-Wundef-true" - Ilumkisa malunga nokusebenzisa ixabiso "inyani" kwi-preprocessor ye-C ngaphandle kokuyichaza.
    • "-Wnrvo" - ukuxilongwa kwe-NRVO ephosiweyo (ebizwa ngokuba yi-Return Value Optimization).
  • Iiflegi ezintsha zokuhlanganisa:
    • "-fprofile-continuous" - yenza ungqamaniso oluqhubekayo lweprofayile kwifayile.
    • "-ftime-report-json" - ulwazi lwexesha lokuqokelela iziphumo kwifomathi ye-JSON.
    • "-ignore-pch" - khubaza iiheader eziqulunqwe kwangaphambili.
    • "-fthinlto-distributor" kunye ne "-Xthinlto-distributor" - ekusebenziseni i-DTLTO (I-Integrated Distributed ThinLTO).
    • "-static-libclosure" - yokudibanisa ngokweenkcukacha ulwandiso lwexesha lokusebenza kweBlocks kwiqonga Windows.
  • Ezandisiweyo zokuxilonga kunye nezixhobo zokuhlalutya ezizinzileyo, zongeza iitshekhi ezintsha (ngaphezu kwekhulu lokuphucula okunxulumene nokuxilonga).
  • Ukuphuculwa kwee-backends ze-ARM, i-Aarch64, i-AMDGPU, i-x86, i-RISC-V, i-LoongArch, i-MIPS, kunye ne-Architecture ye-PowerPC. Inkxaso yokuhlanganisa yovavanyo yeQualcomm uC, Andes, kunye neSiFive izandiso zongezwe kwi-RISC-V ngasemva.

umthombo: opennet.ru

Thenga ukusingathwa okuthembekileyo kwiindawo ezinokhuseleko lweDDoS, iiseva zeVPS VDS 🔥 Thenga ukusingathwa kwewebhusayithi okuthembekileyo ngokhuseleko lwe-DDoS, iiseva zeVPS VDS | ProHoster