Kutulutsidwa kwa LLVM 22 compiler suite

Pambuyo pa miyezi isanu ndi umodzi yopangidwa, LLVM 22.1.0 yatulutsidwa. Imapanga zida (zopangira, zowongolera, ndi zopanga ma code) zomwe zimasonkhanitsa mapulogalamu kukhala bitcode yapakati ya malangizo ofanana ndi RISC (makina otsika okhala ndi njira yowongolera yamitundu yambiri). Pseudocode yopangidwayo imatha kusinthidwa kukhala code ya makina pa nsanja inayake kapena kugwiritsidwa ntchito ndi compiler ya just-in-time (JIT) kuti ipange malangizo a makina mwachindunji panthawi yogwiritsa ntchito pulogalamu. Kutengera ndi ukadaulo wa LLVM, pulojekitiyi ikupanga compiler ya Clang, yothandizira zilankhulo za mapulogalamu za C, C++, ndi Objective-C. Kuyambira ndi nthambi ya 18.x, pulojekitiyi idasinthira ku dongosolo latsopano la manambala, malinga ndi momwe kutulutsidwa 0 ("N.0") kumagwiritsidwira ntchito panthawi yopangidwa, ndipo mtundu woyamba wokhazikika umawerengedwa "N.1."

Zina mwazosintha mu Clang 22:

  • Thandizo lowonjezeredwa la ma tokeni ogawa kukumbukira (Ma Tokeni Ogawa) polemba ntchito zogawa kukumbukira zomwe zimachitika pogwiritsa ntchito ntchito monga malloc yokhala ndi chizindikiritso chapadera. Ma tokeni ogawa amalola kupanga zambiri za heap, kupangitsa kuti kuzindikira kutayikira kwa kukumbukira kukhale kosavuta, komanso kulola kuyika zinthu m'magulu kutengera cholinga chawo kapena mawonekedwe osinthira (monga, kulekanitsa deta ya "hot" ndi "cold"). Kuti muyambitse, gwiritsani ntchito mbendera ya "-fsanitize=alloc-token".
  • Zinthu zokhudzana ndi chilankhulo cha C:
    • Ndondomeko yofotokozera njira yochepetsera "kuchedwetsa" yakhazikitsidwa, zomwe zalola kuti zochita zichitike pamene chiwerengero cha panopa chikutuluka. Mbendera ya "-fdefer-ts" yawonjezedwa kuti ithandize "kuchedwetsa".
    • Ntchito yomangidwa mkati __builtin_stack_address() yawonjezedwa, kuwonetsa ntchito yofanana mu GCC. Ntchitoyi imabwezeretsa adilesi yokhazikika yomwe imalekanitsa dera lokhazikika la ntchito yomwe ilipo yomwe imatchedwa __builtin_stack_address() ndi ntchito zina zomwe imatchula.
  • Kuthekera kukupangidwira mulingo wamtsogolo wa C2y:
    • Thandizo lowonjezeredwa la ma loops otchulidwa, lomwe limakupatsani mwayi wopatsa mayina ma loops ndikusintha mawu, omwe angatchulidwe mu mawu oti break and continue kuti afotokoze momveka bwino momwe loop iyenera kutulukira. outer: for (int i = 0; i < IK; ++ i) { for (int j = 0; j < JK; ++ j) { continue; // go to CONT1 continue outer; // go to CONT2 // CONT1 } // CONT2 }
    • Kugwiritsa ntchito macro yomangidwa mkati mwa "__COUNTER__", yopangidwira kupanga mayina apadera ozindikiritsa, kwakulitsidwa ndipo kwaphatikizidwa mu muyezo. Malire a kuyimba kwa macro iyi a 2147483647 akhazikitsidwa; kupitirira malire awa kudzapanga cholakwika.
    • Chenjezo lochotsedwa (-Wstatic-in-line) pogwiritsa ntchito ntchito zokhazikika kapena zosintha mkati mwa ntchito zomwe zalengezedwa kuti "extern inline".
  • Kuthekera komwe kumatanthauzidwa muyeso ya C23 C:
    • Fayilo ya mutu wa float.h tsopano imathandizira ma macro a FLT_SNAN, DBL_SNAN, ndi LDBL_SNAN, omwe amagwiritsa ntchito ma signaled (omwe amachititsa kuti pakhale kusiyana pakati pa ma arithmetic operations) a NaN values ​​​​ya mitundu ya float, double, ndi long double.
    • Tinakonza vuto pomwe mitundu yosiyanasiyana yosatchulidwa mayina inkaonedwa kuti ikugwirizana ndi gawo lomwelo lomasulira ngati inali ndi minda yofanana.
    • Mbendera ya "-MG" yomwe imagwiritsidwa ntchito ponyalanyaza mafayilo amutu omwe akusowa panthawi yofufuza deta yodalira yakulitsidwa kukhala malangizo a "#embed" ndipo tsopano imaletsa cholakwika cha "file not found" pamene fayilo yomwe yatchulidwa mu malangizo a "#embed" ikusowa.
  • Zogwirizana ndi C ++:
    • Kutha kugwiritsa ntchito zomangira zomangidwa mu "constexpr", monga momwe zapangidwira mu C++2c (C++26) specification, kwawonjezedwa. Izi zikutanthauza kuti maumboni a ma contemplance expressions tsopano akhoza kukhala ma contemplance expressions. Thandizo likugwiritsidwa ntchito pa ma array ndi ma structures osavuta (ma tuples sanayambe kuthandizidwa). constexpr int arr[] = {1, 2}; constexpr auto [x, y] = arr;
    • Monga momwe muyezo wa C++20 umafunira, zoletsa tsopano zasinthidwa kukhala mawonekedwe wamba zisanayang'aniridwe, zomwe zimathandiza kuti mauthenga olondola ozindikira azitha kufotokozedwa bwino komanso kusamalira bwino zolakwika zosinthira muzokambirana za template zomwe zimagwiritsidwa ntchito mu concept-id zokha.
    • Adawonjezera banja la ntchito zomangidwa mkati "__builtin_[lt|gt|le|ge]_synthesizes_from_spaceship" kuti adziwe ngati ma operators oyerekeza "<", ">", "<=", ndi ">=" adapangidwa kuchokera ku operator "<=>".
    • Gawo la "-Wincompatible-pointer-types" lasinthidwa kuti lipereke cholakwika m'malo mwa chenjezo. Kuti mubwerere ku khalidwe lakale, gwiritsani ntchito njira ya "-Wno-error=incompatible-pointer-types".
  • Ntchito zowonjezera zomangidwa mkati __builtin_bswapg, __builtin_elementwise_ldexp, __builtin_elementwise_fshl, __builtin_elementwise_fshr, __builtin_elementwise_minnumnum, __builtin_elementwise_maxnumnum, __builtin_masked_load, __builtin_masked_expand_load, __builtin_masked_store, __builtin_masked_compress_store, __builtin_masked_gather, __builtin_masked_scatter, ndi __builtin_dedup_pack. Mwachitsanzo, builtin_dedup_pack imakulolani kuchotsa zobwerezabwereza pamndandanda wa mitundu: pogwiritsa ntchito MyTypeList = TypeList<__builtin_dedup_pack ...>; // mtundu wotsatira udzakhala TypeList
  • Mukakonza zolakwika mu khalidwe losadziwika bwino ndi UBSan (-fsanitize=undefined -fsanitize-trap=undefined), chidziwitso cha chifukwa cha zolakwika tsopano chikuphatikizidwa mu chidziwitso chopangidwa cha zolakwika. Mbendera ya "-fsanitize-debug-trap-reasons" yawonjezedwa kuti iwonetse kuchuluka kwa tsatanetsatane mu chidziwitso cha zolakwika. Ikhoza kukhazikitsidwa ku "basic" pamafotokozedwe onse (monga, "Integer addition overflowed") ndi "detailed" kuti iphatikizepo zambiri (monga, "signed integer addition overflow mu 'a + b'").
  • Wowonjezera mbendera zatsopano:
    • "-f[no-]sanitize-debug-trap-reasons" kuti muwone ngati zifukwa za exception trap zimayikidwa mu deta yolakwika pokonza ndi "-fsanitize-trap".
    • "-fsanitize=alloc-token", "-falloc-token-max", "-fsanitize-alloc-token-fast-abi", ndi "-fsanitize-alloc-token-extended" kuti muyang'anire ma tokeni ogawa kukumbukira.
    • "-fmatrix-memory-layout" kuti ilamulire kapangidwe ka kukumbukira kwa mitundu ya matrix (monga column-major ya column-major, row-major ya row-major).
  • Ma functions tsopano ali ndi "malloc_span" attribute, yofanana ndi malloc attribute koma imagwira ntchito ku ma functions omwe amabwezera kapangidwe kofanana ndi span komwe kali ndi pointer ndi munda wokhala ndi kukula kapena pointer kumapeto kwa block.
  • Yawonjezera chizindikiro cha "modular_format" kuti isankhe mosinthika momwe ntchito ya printf yolumikizirana ikuyendera panthawi yolumikizirana.
  • Zipangizo zodziwira matenda ndi kusanthula kosasinthasintha zakulitsidwa, macheke atsopano awonjezedwa (kusintha kosiyanasiyana kokhudzana ndi matenda).
  • Zowonjezera zina za SSE, AVX, ndi AVX512 zawonjezedwa ku X86 backend. Ma build mode awonjezedwa ku Intel CPUs kutengera Wildcat Lake (-march=wildcatlake) ndi Nova Lake (-march=novalake) microarchitectures.
  • Chipinda cha AArch64 tsopano chikuthandiza mapurosesa a Ampere Computing Ampere1C (ampere1c), Arm C1-Nano (c1-nano), Arm C1-Pro (c1-pro), Arm C1-Premium (c1-premium), ndi Arm C1-Ultra (c1-ultra). Ntchito zina zomangidwa mkati zawonjezedwa pa malangizo a FCVTZ[US], FCVTN[US], FCVTM[US], FCVTP[US], ndi FCVTA[US]. Thandizo la Function Multi-Versioning (FMV) lakhazikika. Ogwiritsa ntchito tsopano akhoza kunyalanyaza kufunika kwa mitundu yosiyanasiyana ya ntchito.
  • Thandizo lawonjezeredwa pa kapangidwe ka LoongArch32 (LA32R, LA32S).
  • Ma backend abwino a ARM, AMDGPU, RISC-V, LoongArch64, MIPS, WebAssembly, ndi PowerPC architectures.

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