Kutulutsidwa kwa LLVM 15.0 compiler suite

Pambuyo pa miyezi isanu ndi umodzi ya chitukuko, kutulutsidwa kwa pulojekiti ya LLVM 15.0 kunaperekedwa - chida chogwirizana ndi GCC (compilers, optimizers ndi code generator) chomwe chimasonkhanitsa mapulogalamu mu bitcode yapakatikati ya RISC-monga malangizo enieni (makina otsika omwe ali ndi Multilevel optimization system). Pseudocode yopangidwa ikhoza kusinthidwa pogwiritsa ntchito JIT compiler kukhala malangizo amakina mwachindunji panthawi yokonza pulogalamu.

Kusintha kwakukulu mu Clang 15.0:

  • Kwa machitidwe a x86, mbendera ya "-fzero-call-used-regs" yawonjezedwa. Izi zimawonetsetsa kuti ma register onse a CPU omwe amagwiritsidwa ntchito pochita ntchito amasinthidwa musanabweze kuwongolera. Njirayi imathandizira kuletsa kutayikira kwa chidziwitso kuchokera ku ntchito ndikuchepetsa kuchuluka kwa midadada yoyenera kupanga zida za ROP (Return-Oriented Programming) muzochita bwino ndi pafupifupi 20%.
  • Kusasinthika kwa masanjidwe a kukumbukira kwadongosolo kwakhazikitsidwa pa C code, kusokoneza kuchotsedwa kwa data kuchokera kuzinthu pakachitika ngozi. Kusintha kwachisawawa kumayatsidwa ndikuyimitsidwa pogwiritsa ntchito mawonekedwe a randomize_layout ndi no_randomize_layout ndipo kumafuna kuyika mbewu pogwiritsa ntchito mbendera ya "-frandomize-layout-seed" kapena "-frandomize-layout-seed-file".
  • Wowonjezera mbendera "-fstrict-flex-arrays= ", zomwe zimakulolani kulamulira malire a chinthu chosinthika chosinthika muzopangidwe (Flexible Array Members, mndandanda wa kukula kosadziŵika kumapeto kwa dongosolo). Pamene aikidwa ku 0 (chosakhazikika), chinthu chomaliza cha kapangidwe kake kamene kamakhala ndi gulu nthawi zonse chimatengedwa ngati gulu losinthika; 1 - miyeso yokha [], [0] imatengedwa monga [], [0] yokhazikika; miyeso [] ndi [0] imatengedwa ngati gulu losinthika.
  • Thandizo loyesera la chilankhulo cha C-ngati HLSL (Chiyankhulo Chapamwamba cha Shader), chomwe chimagwiritsidwa ntchito mu DirectX polemba shaders.
  • Anawonjezera njira ya "-Warray-parameter", yomwe imachenjeza za kutanthauziranso ntchito ndi zidziwitso zosagwirizana ndi mikangano yokhudzana ndi utali wokhazikika komanso utali wosiyanasiyana.
  • Kulumikizana bwino kwa MSVC. Thandizo lowonjezera la "#pragma function" (amalangiza wolemba kuti apange foni yogwira ntchito m'malo moikulitsa mkati) ndi "#pragma alloc_text" (imatanthawuza dzina la gawo lomwe lili ndi code code), zonse zoperekedwa ndi MSVC. Thandizo lowonjezera la mbendera za MSVC / JMC ndi / JMC.
  • Ntchito idapitilira kuthandizira miyezo ya C2X ndi C++23 yomwe ikubwera. Pachiyankhulo cha C, zotsatirazi zakhazikitsidwa: chizindikiro cha noreturn, mawu osakira ndi owona, mtundu wa _BitInt(N) wa ziwerengero za m'lifupi mwake, ma *_WIDTH macros, ndi prefix u8 ya zilembo za UTF-8.

    Kwa C++, izi zikugwiritsidwa ntchito: kuphatikiza ma module, ABI kudzipatula kwa mamembala ogwira ntchito, kuyitanitsa kukhazikitsidwa kwamphamvu kwa zosintha zomwe sizili zam'deralo m'ma modules, multidimensional index operators, auto(x), zosiyana zenizeni, goto ndi malemba mu ntchito zomwe zatchulidwa kuti constexpr, kuthawa kwa ma delimiters, otchulidwa zilembo zothawa.

  • Thandizo la OpenCL ndi OpenMP lakulitsidwa. Thandizo la cl_khr_subgroup_rotate OpenCL yowonjezera yawonjezedwa.
  • Pazomangamanga za x86, chitetezo chawonjezedwa ku zofooka za mapurosesa obwera chifukwa chongotsatira malangizo atatha kulumpha mopanda malire. Vutoli limabwera chifukwa cha kuwongolera kwa malangizo pambuyo podumphadumpha (SLS, Straight Line Speculation). Njira ya "-mharden-sls=[none|all|return|indirect-jmp]" ilipo kuti ithandizire chitetezo.
  • Kwa nsanja zomwe zimathandizira kukulitsa kwa SSE2, mtundu wa _Float16 wawonjezedwa, womwe umatsanziridwa pogwiritsa ntchito mtundu woyandama popanda thandizo la malangizo a AVX512-FP16.
  • Wowonjezera "-m[no-]rdpru" mbendera kuti aziwongolera kugwiritsa ntchito malangizo a RDPRU, othandizidwa kuyambira mapurosesa a AMD Zen2.
  • Anawonjezera mbendera ya "-mfunction-return=thunk-extern" kuti muteteze ku chiwopsezo cha RETBLEED, chomwe chimagwira ntchito powonjezera mndandanda wa malangizo omwe samaphatikizapo kuphatikizika kwa njira yongopeka yodumpha mosalunjika.

Zatsopano zazikulu mu LLVM 15.0:

  • Zowonjezera zothandizira Cortex-M85 CPU, Armv9-A, Armv9.1-A ndi Armv9.2-A zomangamanga, Armv8.1-M PACBTI-M zowonjezera.
  • Kumbuyo koyeserera kwa DirectX kwawonjezedwa komwe kumathandizira mawonekedwe a DXIL (DirectX Intermediate Language) omwe amagwiritsidwa ntchito pazithunzi za DirectX. Kumbuyo kumayatsidwa ndi kufotokozera "-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=DirectX" zomanga.
  • Libc++ ikupitilizabe kukhazikitsa zatsopano za C++20 ndi C++2b, kuphatikiza kumaliza kukhazikitsa laibulale ya "format" ndikupereka mtundu woyeserera wa library "ranges".
  • Kupititsa patsogolo kumbuyo kwa x86, PowerPC ndi RISC-V zomangamanga.
  • Kuthekera kwa cholumikizira cha LLD ndi LLDB debugger kwakulitsidwa.

Source: opennet.ru

Gulani kuchititsa kodalirika kwamasamba okhala ndi chitetezo cha DDoS, ma seva a VPS VDS Gulani malo odalirika osungira mawebusayiti okhala ndi chitetezo cha DDoS, ma seva a VPS VDS | ProHoster