Itusilẹ ti LLVM 22 alakojo suite

Lẹ́yìn oṣù mẹ́fà tí a ti ṣe àgbékalẹ̀ rẹ̀, a ti tú LLVM 22.1.0 sílẹ̀. Ó ń ṣe àgbékalẹ̀ àwọn irinṣẹ́ (àwọn olùkójọpọ̀, àwọn olùmúlò, àti àwọn olùpèsè kódù) tí wọ́n ń kó àwọn ètò jọ sí àlàfo bitcode ti àwọn ìlànà foju bíi RISC (ẹ̀rọ foju ìpele kékeré pẹ̀lú ètò ìṣirò ipele-pupọ). A lè yí pseudocode tí a ṣẹ̀dá padà sí kódù ẹ̀rọ fún pẹpẹ àfojúsùn kan tàbí kí olùkójọpọ̀ tó péye (JIT) lò ó láti ṣe àwọn ìtọ́ni ẹ̀rọ tààrà nígbà tí a bá ń ṣe ètò náà. Nípasẹ̀ àwọn ìmọ̀ ẹ̀rọ LLVM, iṣẹ́ náà ń ṣe àgbékalẹ̀ Clang compiler, ó ń ṣe àtìlẹ́yìn fún àwọn èdè ètò C, C++, àti Objective-C. Bẹ̀rẹ̀ pẹ̀lú ẹ̀ka 18.x, iṣẹ́ náà yípadà sí ètò nọ́mbà ẹ̀yà tuntun, gẹ́gẹ́ bí a ṣe ń lo ìtújáde 0 ("N.0") nígbà ìdàgbàsókè, àti ẹ̀yà ìdúróṣinṣin àkọ́kọ́ ni a ń kà sí "N.1."

Awọn ilọsiwaju ni Clang 22 pẹlu:

  • Àfikún àtìlẹ́yìn fún àwọn àmì ìpín ìrántí (Àwọn àmì ìpín) fún sísàmì sí àwọn iṣẹ́ ìpín ìrántí tí a ṣe nípa lílo àwọn iṣẹ́ bíi malloc pẹ̀lú ìdámọ̀ àrà ọ̀tọ̀ kan. Àwọn àmì ìpín fún lílo àkójọpọ̀ gba ààyè fún ṣíṣètò ìwífún okiti, mímú kí wíwá ìjókòó ìrántí rọrùn, àti mímú kí àwọn nǹkan pọ̀ ní ìbámu pẹ̀lú ète tàbí àwọn ìlànà àtúnṣe wọn (fún àpẹẹrẹ, yíyà sọ́tọ̀ "gbóná" kúrò nínú dátà "tútù"). Láti ṣiṣẹ́, lo àsíá "-fsanitize=alloc-token".
  • Àwọn ohun tó ní í ṣe pẹ̀lú èdè C:
    • A ti ṣe àgbékalẹ̀ àkọsílẹ̀ ìlànà ìṣiṣẹ́ ìfàsẹ́yìn "ìfàsẹ́yìn", èyí tí ó fún ni láàyè láti ṣe àwọn ìgbésẹ̀ nígbà tí àyè ìṣiṣẹ́ lọ́wọ́lọ́wọ́ bá jáde. A ti fi àsíá "-fdefer-ts" kún un láti jẹ́ kí ìtìlẹ́yìn "ìfàsẹ́yìn" ṣeé ṣe.
    • A ti fi iṣẹ́ tí a ṣe sínú rẹ̀ __builtin_stack_address() kún un, èyí tí ó ń ṣe àfihàn iṣẹ́ tí ó jọra nínú GCC. Iṣẹ́ yìí ń dá àdírẹ́sì stack padà tí ó ya agbègbè stack ti iṣẹ́ lọ́wọ́lọ́wọ́ tí a pè ní __builtin_stack_address() àti àwọn iṣẹ́ tí ó tẹ̀lé e.
  • Awọn agbara ni idagbasoke fun boṣewa C2y iwaju:
    • Àtìlẹ́yìn tí a fi kún un fún àwọn loop tí a dárúkọ, èyí tí ó fún ọ láàyè láti yan àwọn orúkọ sí àwọn loop àti àwọn gbólóhùn yíyípadà, èyí tí a lè sọ nínu àwọn gbólóhùn break àti continue láti ṣàlàyé loop náà ní kedere láti jáde láti. outer: for (int i = 0; i < IK; ++ i) { fún (int j = 0; j < JK; ++ j) { tẹ̀síwájú; // lọ sí CONT1 tẹ̀síwájú òde; // lọ sí CONT2 // CONT1 } // CONT2 }
    • A ti fẹ̀ sí i nípa lílo macro "__COUNTER__" tí a ṣe sínú rẹ̀, tí a ṣe láti mú àwọn orúkọ ìdámọ̀ àrà ọ̀tọ̀ jáde, a sì ti fi kún ìwọ̀n náà. A ti ṣètò ààlà ìpè 2147483647 sí macro yìí; tí ó bá kọjá ààlà yìí yóò fa àṣìṣe kan.
    • A ti yọ ìkìlọ̀ kúrò (-Wstatic-in-inline) nígbà tí a bá ń lo àwọn iṣẹ́ àìdúró tàbí àwọn oníyípadà inú àwọn iṣẹ́ tí a kéde gẹ́gẹ́ bí "inline extern".
  • Awọn agbara ti ṣalaye ni boṣewa C23 C:
    • Fáìlì àkọlé float.h ti ń ṣe àtìlẹ́yìn fún àwọn mákrós FLT_SNAN, DBL_SNAN, àti LDBL_SNAN, èyí tí ó ń ṣe àgbékalẹ̀ àwọn ìwọ̀n NaN fún àwọn oríṣi ìpele float, double, àti long double.
    • A ti ṣe àtúnṣe àṣìṣe kan níbi tí a ti ṣe àyẹ̀wò oríṣiríṣi irú tí a kò dárúkọ gẹ́gẹ́ bí èyí tí ó báramu láàárín ẹ̀ka ìtumọ̀ kan náà tí wọ́n bá ní àwọn pápá kan náà.
    • Àmì "-MG" tí a lò láti fojú fo àwọn fáìlì àkọlé tí ó sọnù nígbà ìwádìí ìgbẹ́kẹ̀lé ni a ti fẹ̀ sí sí àwọn ìtọ́ni "#embed" ó sì ti pa àṣìṣe "fáìlì tí a kò rí" rẹ́ nígbà tí fáìlì kan tí a sọ ní ìlànà "#embed" bá sọnù.
  • Awọn ẹya ti o jọmọ C++:
    • A ti fi agbara lati lo awọn asopọ ti a ṣeto sinu ipo "constexpr", gẹgẹ bi a ti ṣe agbekalẹ rẹ ninu alaye C++2c (C++26), kun. Eyi tumọ si pe awọn itọkasi si awọn ifihan igbagbogbo le jẹ awọn ifihan nigbagbogbo bayi. Atilẹyin ni a ṣe imuse fun awọn arrays ati awọn eto ti o rọrun (awọn tuples ko tii ṣe atilẹyin). constexpr int arr[] = {1, 2}; constexpr auto [x, y] = arr;
    • Gẹ́gẹ́ bí ìlànà C++20 ṣe béèrè, a ti yí àwọn ìdíwọ́ padà sí fọ́ọ̀mù boṣewa kí a tó ṣàyẹ̀wò rẹ̀, èyí tí ó fúnni láyè láti rí àwọn ìránṣẹ́ àyẹ̀wò tó péye àti láti ṣe àtúnṣe tó tọ́ sí àwọn àṣìṣe ìyípadà nínú àwọn àríyànjiyàn àwòṣe tí a lò nínú àwọn concept-ids nìkan.
    • A fi ìdílé àwọn iṣẹ́ tí a kọ́ sínú "__builtin_[lt|gt|le|ge]_synthesizes_from_spaceship" kún un láti mọ̀ bóyá àwọn olùlò ìfiwéra "<", ">", "<=", àti ">=" ni a ṣe láti inú olùṣiṣẹ́ "<=>".
    • A ti yí paramita "-Wincompatible-pointer-types" padà láti mú àṣìṣe jáde dípò ìkìlọ̀. Láti padà sí ìwà ìṣáájú, lo àṣàyàn "-Wno-error=incompatible-pointer-types".
  • Àwọn iṣẹ́ tí a fi kún un __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, àti __builtin_dedup_pack. Fún àpẹẹrẹ, builtin_dedup_pack ń jẹ́ kí o yọ àwọn ẹ̀dà-ẹ̀dà kúrò nínú àkójọ àwọn irú: nípa lílo MyTypeList = TypeList<_builtin_dedup_pack ...>; // irú tí ó bá yọrí sí yóò jẹ́ TypeList
  • Nígbà tí a bá ń ṣàtúnṣe ìwà àìlóye pẹ̀lú UBSan (-fsanitize=undefined -fsanitize-trap=undefined), ìwífún nípa àṣìṣe ti wà nínú ìwífún nípa àṣìṣe tí a ṣẹ̀dá báyìí. A ti fi àmì "-fsanitize-debug-trap-reasons" kún un láti sọ ìpele àlàyé nínú ìwífún àṣìṣe náà. A lè ṣètò rẹ̀ sí "ipilẹ" fún àwọn àpèjúwe gbogbogbòò (fún àpẹẹrẹ, "àfikún Integer kún") àti "àfikún àlàyé" láti fi àwọn àlàyé àlàyé kún un (fún àpẹẹrẹ, "àfikún integer tí a fọwọ́ sí kún nínú 'a + b'").
  • Ṣafikun awọn asia alakojọ tuntun:
    • "-f[no-]sanitize-debug-trap-reasons" láti ṣàkóso bóyá àwọn ìdí ìyọkúrò pàkúté wà nínú ìwífún àṣìṣe nígbà tí a bá ń kójọpọ̀ pẹ̀lú ipò "-fsanitize-trap".
    • "-fsanitize=alloc-token", "-falloc-token-max", "-fsanitize-alloc-token-fast-abi", àti "-fsanitize-alloc-token-extended" láti ṣàkóso àwọn àmì ìpín ìrántí.
    • "-fmatrix-memory-layout" láti ṣàkóso ìṣètò ìrántí àwọn irú matrix (fún àpẹẹrẹ column-major fún column-major, row-major fún row-major).
  • Àwọn iṣẹ́ ní àmì "malloc_span" báyìí, tí ó jọ àmì malloc ṣùgbọ́n ó wúlò fún àwọn iṣẹ́ tí ó ń dá àwọn ètò tí ó jọ span padà tí ó ní àmì àti pápá tí ó ní ìwọ̀n tàbí àmì sí òpin bulọọki náà.
  • A fi àmì "modular_format" kún un láti yan ìṣiṣẹ́ tí a so pọ̀ mọ́ra tí ó yẹ fún iṣẹ́ ìtẹ̀wé ní ​​àkókò ìjápọ̀.
  • A ti fẹ̀ sí àwọn irinṣẹ́ ìwádìí àti ìwádìí àìdúró, a ti fi àwọn àyẹ̀wò tuntun kún un (ọ̀pọ̀lọpọ̀ àwọn àtúnṣe tó ní í ṣe pẹ̀lú àyẹ̀wò).
  • A ti fi àwọn àfikún ìfàsẹ́yìn SSE, AVX, àti AVX512 kún ẹ̀yìn X86. A ti fi àwọn ọ̀nà ìkọ́lé kún Intel CPUs tí ó dá lórí Wildcat Lake (-march=wildcatlake) àti Nova Lake (-march=novalake) microarchitectures.
  • Ẹ̀yìn AArch64 ti ń ṣe àtìlẹ́yìn fún Ampere Computing Ampere1C (ampere1c), Arm C1-Nano (c1-nano), Arm C1-Pro (c1-pro), Arm C1-Premium (c1-premium), àti Arm C1-Ultra (c1-ultra). A ti fi àwọn iṣẹ́ àfikún tí a fi sínú rẹ̀ kún un fún àwọn ìtọ́ni FCVTZ[US], FCVTN[US], FCVTM[US], FCVTP[US], àti FCVTA[US]. A ti mú àtìlẹ́yìn Function Multi-Versioning (FMV) dúró ṣinṣin. Àwọn olùlò lè borí àwọn ẹ̀yà iṣẹ́ tó yàtọ̀ síra.
  • A fi àtìlẹ́yìn kún un fún àwòrán LoongArch32 (LA32R, LA32S).
  • Àwọn àtìlẹ́yìn tó dára síi fún àwọn ayàwòrán ARM, AMDGPU, RISC-V, LoongArch64, MIPS, WebAssembly, àti PowerPC.

orisun: opennet.ru

Ra alejo gbigba igbẹkẹle fun awọn aaye pẹlu aabo DDoS, awọn olupin VPS VDS 🔥 Ra gbigbalejo oju opo wẹẹbu ti o gbẹkẹle pẹlu aabo DDoS, awọn olupin VPS VDS | ProHoster