Ukukhishwa kwe-LLVM 15.0 compiler suite

Ngemva kwezinyanga eziyisithupha zokuthuthukiswa, kwethulwa ukukhishwa kwephrojekthi ye-LLVM 15.0 - ikhithi yamathuluzi ehambisana ne-GCC (abahlanganisi, izithuthukisi kanye namakhodi akhiqiza amakhodi) ehlanganisa izinhlelo zibe yi-bitcode ephakathi yemiyalelo ye-RISC efana ne-virtual (umshini wezinga eliphansi one- uhlelo lokusebenzisa amazinga amaningi). I-pseudocode ekhiqiziwe ingaguqulwa kusetshenziswa i-JIT compiler ibe imiyalelo yomshini ngokuqondile ngesikhathi sokwenziwa kohlelo.

Ukuthuthukiswa okukhulu ku-Clang 15.0:

  • Kumasistimu asekelwe ku-x86, ifulegi elithi "-fzero-call-used-regs" lengeziwe. Lokhu kuqinisekisa ukuthi wonke amarejista e-CPU asetshenziswa kumsebenzi akhishwa uziro ngaphambi kokubuyisela ukulawula. Le nketho isiza ukuvimbela ukuvuza kolwazi emisebenzini futhi inciphisa inani lamabhulokhi afanele ukwakha amagajethi e-ROP (Return-Oriented Programming) ekuxhasweni cishe ngo-20%.
  • Ukwenziwa ngokungahleliwe kwesakhiwo sememori yesakhiwo kusetshenziswe ikhodi engu-C, okwenza kube nzima ukukhishwa kwedatha ezakhiweni uma kwenzeka kuxhashazwa ukuba sengozini. Ukungahleliwe kunikwe amandla futhi kukhutshaziwe kusetshenziswa i-randomize_layout kanye nezichasiso_ze-randomize_layout futhi kudinga ukusetha imbewu kusetshenziswa ifulege elithi "-frandomize-layout-seed" noma elithi "-frandomize-layout-seed-file".
  • Kwengezwe ifulegi "-fstrict-flex-arrays= ", okuvumela ukuthi ulawule imingcele yesici sohlelo oluguquguqukayo ezakhiweni (Amalungu E-Flexible Array, uhlu lobukhulu obungachazwanga ekugcineni kwesakhiwo). Uma isethwe ku-0 (okuzenzakalelayo), ingxenye yokugcina yesakhiwo esinohlu ihlale iphathwa njengohlelo oluguquguqukayo; 1 - kuphela ubukhulu [], [0] buphathwa njengohlelo kuphela, futhi [0] luphathwa njenge-array kuphela, futhi [1] ubukhulu [] kanye no-[2] kuthathwa njengohlelo oluvumelana nezimo.
  • Kwengezwe usekelo lokuhlola lolimi olufana no-C lwe-HLSL (Ulimi Lwe-Shader Lwezinga Eliphezulu), olusetshenziswa ku-DirectX ekubhaleni imithunzi.
  • Kwengezwe inketho ethi "-Warray-parameter", exwayisa mayelana nokuchaza kabusha imisebenzi ngezimemezelo ezingahambelani zama-agumenti ezihlobene nobude obugxilile nobude obuguquguqukayo bamalungu afanayo.
  • Ukuhambisana kwe-MSVC okuthuthukisiwe. Ukwesekwa okwengeziwe "komsebenzi we-#pragma" (kuyala umhlanganisi ukuthi enze ikholi yokusebenza esikhundleni sokuyinweba emgqeni) kanye ne-"#pragma alloc_text" (ichaza igama lesigaba esiqukethe ikhodi yokusebenza), zombili zihlinzekwa yi-MSVC. Ukwesekwa okwengeziwe kwamafulege ahambisanayo ne-MSVC /JMC kanye/ne-JMC.
  • Umsebenzi waqhubeka ekusekeleni amazinga azayo e-C2X kanye ne-C++23. Olimini elingu-C, okulandelayo kusetshenzisiwe: isibaluli se-noreturn, amagama angukhiye angamanga nayiqiniso, uhlobo lwe-_BitInt(N) lwamanani aphelele obubanzi obunikeziwe, amamakhro *_WIDTH, kanye nesiqalo esingu-u8 sezinhlamvu ze-UTF-8.

    Ku-C++, izici ezilandelayo ziyasetshenziswa: ukuhlanganisa amamojula, ukuhlukaniswa kwe-ABI kwamalungu omsebenzi, ku-oda ukuqaliswa okuguquguqukayo kokuguquguqukayo okungekona okwasendaweni kumamojula, ama-opharetha wenkomba ye-multidimensional, i-auto(x), okuguquguqukayo okungezona okungokoqobo, i-goto namalebula emisebenzini emenyezelwe njenge-constexpr, ukulandelana kokuphunyuka ngama-delimiters, okuqanjwe izinhlamvu zokuphunyuka.

  • Usekelo lwe-OpenCL ne-OpenMP lunwetshiwe. Usekelo lwesandiso se-cl_khr_subgroup_rotate OpenCL sengeziwe.
  • Okwezakhiwo ze-x86, isivikelo sengeziwe ngokumelene nokuba sengozini kumaphrosesa okubangelwa ukufakwa kokuqagela kwemiyalelo ngemva kokusebenza kokweqa okuqondile okungenamibandela. Inkinga ivela ngenxa yokucutshungulwa phambili kwemiyalo ngokushesha ngemva komyalelo wokweqa (i-SLS, Ukuqagela Komugqa Oqondile). Inketho ethi "-mharden-sls=[none|all|return|indirect-jmp]" iyatholakala ukuze ivumele ukuvikeleka.
  • Kumapulatifomu asekela isandiso se-SSE2, uhlobo lwe-_Float16 lwengeziwe, olulingiswa kusetshenziswa uhlobo lokuntanta ngaphandle kokusekelwa kwemiyalelo ye-AVX512-FP16.
  • Kwengezwe ifulege elithi "-m[no-]rdpru" ukuze kulawulwe ukusetshenziswa komyalelo we-RDPRU, osekelwa kusukela kumaphrosesa we-AMD Zen2.
  • Kwengezwe ifulegi elithi "-mfunction-return=thunk-extern" ukuze kuvikelwe ku-RETBLEED sengozini, esebenza ngokwengeza imiyalelo elandelanayo engafaki ukubandakanyeka kwendlela yokuqagela yokugxuma okungaqondile.

Izinto ezintsha ezibalulekile ku-LLVM 15.0:

  • Usekelo olungeziwe lwe-Cortex-M85 CPU, i-Armv9-A, i-Armv9.1-A ne-Armv9.2-A yezakhiwo, izandiso ze-Armv8.1-M PACBTI-M.
  • I-backend ye-DirectX yokuhlola yengeziwe esekela ifomethi ye-DXIL (DirectX Intermediate Language) esetshenziselwa izithunzi ze-DirectX. Indawo engemuva inikwe amandla ngokucacisa ipharamitha yokwakha ethi "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=DirectX".
  • I-Libc++ iyaqhubeka nokusebenzisa izici ezintsha zamazinga e-C++20 kanye ne-C++2b, okuhlanganisa ukuqedela ukusetshenziswa komtapo "wefomethi" nokunikeza inguqulo yokuhlola yomtapo "wamabanga".
  • Okungemuva okuthuthukisiwe kwezakhiwo ze-x86, i-PowerPC ne-RISC-V.
  • Amandla esixhumanisi se-LLD ne-LLDB debugger anwetshiwe.

Source: opennet.ru

Thenga ukusingathwa okuthembekile kwamasayithi anokuvikelwa kwe-DDoS, amaseva e-VPS VDS 🔥 Thenga ukusingathwa kwewebhusayithi okuthembekile ngokuvikelwa kwe-DDoS, amaseva e-VPS VDS | ProHoster