Às dèidh sia mìosan de leasachadh, chaidh LLVM 22.1.0 fhoillseachadh. Bidh e a’ leasachadh innealan (co-chruinneachaidhean, innealan-leasachaidh, agus gineadairean còd) a bhios a’ cruinneachadh phrògraman gu bhith nan còd-bit eadar-mheadhanach de stiùiridhean brìgheil coltach ri RISC (inneal brìgheil ìosal-ìre le siostam leasachaidh ioma-ìre). Faodar an còd-pseudo a chaidh a chruthachadh a thionndadh gu còd inneil airson àrd-ùrlar targaid sònraichte no a chleachdadh le co-chruinneadair dìreach-ann-an-àm (JIT) gus stiùiridhean inneil a chruthachadh gu dìreach rè ruith a’ phrògraim. Stèidhichte air teicneòlasan LLVM, tha am pròiseact a’ leasachadh an co-chruinneadair Clang, a’ toirt taic do na cànanan prògramaidh C, C++, agus Objective-C. A’ tòiseachadh leis a’ mheur 18.x, ghluais am pròiseact gu sgeama àireamhachaidh dreach ùr, a rèir dè an tèid foillseachadh 0 ("Àireamh ...
Am measg leasachaidhean ann an Clang 22 tha:
- Chaidh taic a chur ris airson comharran riarachaidh cuimhne (Allocation Tokens) airson comharrachadh obrachaidhean riarachaidh cuimhne a chaidh a dhèanamh le bhith a’ cleachdadh ghnìomhan leithid malloc le comharraiche sònraichte. Leigidh comharran riarachaidh le structaradh fiosrachaidh cruachan, lorg aodion cuimhne a dhèanamh nas sìmplidhe, agus le bhith a’ comasachadh buidhnean nithean stèidhichte air an adhbhar no pàtrain atharrachaidh (me, a’ sgaradh dàta “teth” bho “fhuar”. Gus a chomasachadh, cleachd am bratach “-fsanitize=alloc-token”.
- Feartan co-cheangailte ris a’ chànan C:
- Chaidh dreachd de shònrachadh a mhìnicheas an dòigh-obrach cur gu bàs dàil "defer" a chur an gnìomh, a leigeas le gnìomhan a bhith air an cur gu bàs nuair a thig an raon làithreach gu crìch. Chaidh am bratach "-fdefer-ts" a chur ris gus taic "defer" a chomasachadh.
- Chaidh an gnìomh togte __builtin_stack_address() a chur ris, a tha coltach ris a’ ghnìomh coltach ann an GCC. Bidh an gnìomh seo a’ tilleadh an seòladh cruach a tha a’ sgaradh raon cruach na gnìomha làithriche a ghairm __builtin_stack_address() agus gnìomhan às dèidh sin a ghairm e.
- Comasan a thathar a’ leasachadh airson inbhe C2y san àm ri teachd:
- Taic air a chur ris airson lùban ainmichte, a leigeas leat ainmean a shònrachadh do lùban agus aithrisean suidse, a dh'fhaodar a shònrachadh ann an aithrisean briseadh agus leantainn air adhart gus an lùb às am bu chòir fàgail a mhìneachadh gu soilleir. outer: for (int i = 0; i < IK; ++ i) { for (int j = 0; j < JK; ++ j) { continue; // rach gu CONT1 continue outer; // rach gu CONT2 // CONT1 } // CONT2 }
- Chaidh cur an gnìomh a’ mhacra “__COUNTER__” togte, a chaidh a dhealbhadh gus ainmean aithneachaidh sònraichte a chruthachadh, a leudachadh agus a ghabhail a-steach san inbhe. Chaidh crìoch de 2147483647 gairm a shuidheachadh chun mhacra seo; cruthaichidh dol thairis air a’ chrìoch seo mearachd.
- Chaidh rabhadh (-Wstatic-in-inline) a thoirt air falbh nuair a thathar a’ cleachdadh gnìomhan statach no caochladairean taobh a-staigh gnìomhan air an ainmeachadh mar “extern inline”.
- Comasan air am mìneachadh anns an inbhe C23 C:
- Tha am faidhle ceann-sgrìobhaidh float.h a-nis a’ toirt taic do na macros FLT_SNAN, DBL_SNAN, agus LDBL_SNAN, a bhios a’ cur an gnìomh luachan NaN comharraichte (ag adhbhrachadh eisgeachd nuair a thèid an cleachdadh ann an obrachaidhean àireamhachd) airson seòrsachan float, double, agus long double.
- Chaidh biast a chàradh far an deach dèiligeadh ri diofar sheòrsaichean gun ainm mar gum biodh iad co-chòrdail taobh a-staigh an aon aonad eadar-theangachaidh ma bha na h-aon raointean aca.
- Chaidh am bratach "-MG" a thathar a’ cleachdadh gus dearmad a dhèanamh air faidhlichean ceann-sgrìobhaidh a tha a dhìth rè sganadh eisimeileachd a leudachadh gu stiùiridhean "#embed" agus a-nis tha e a’ cur bacadh air a’ mhearachd "cha deach faidhle a lorg" nuair a tha faidhle a tha air a shònrachadh ann an stiùireadh "#embed" a dhìth.
- Feartan co-cheangailte ri C++:
- Chaidh a’ chomas ceanglaichean structaraichte a chleachdadh ann an co-theacsa “constexpr”, mar a chaidh a leasachadh anns an t-sònrachadh C++2c (C++26), a chur ris. Tha seo a’ ciallachadh gum faod iomraidhean air abairtean seasmhach a bhith nan abairtean seasmhach a-nis. Tha taic air a chur an gnìomh airson sreathan agus structaran sìmplidh (chan eil taic ri tuples fhathast). constexpr int arr[] = {1, 2}; constexpr auto [x, y] = arr;
- Mar a tha riatanach leis an inbhe C++20, tha cuingealachaidhean a-nis air an tionndadh gu cruth àbhaisteach mus tèid an sgrùdadh, a’ leigeil le teachdaireachdan breithneachaidh nas cruinne agus làimhseachadh ceart air mearachdan ionadachaidh ann an argamaidean teamplaid a thathas a’ cleachdadh ann an idn bun-bheachd a-mhàin.
- Chaidh teaghlach de ghnìomhan togte "__builtin_[lt|gt|le|ge]_synthesizes_from_spaceship" a chur ris gus faighinn a-mach an deach na gnìomhaichean coimeas "<", ">", "<=", agus ">=" a cho-chur bhon ghnìomhaiche "<=>".
- Chaidh am paramadair "-Wincompatible-pointer-types" atharrachadh gus mearachd a thoirt a-mach an àite rabhadh. Gus tilleadh chun an giùlan roimhe, cleachd an roghainn "-Wno-error=incompatible-pointer-types".
- Chaidh gnìomhan togte a chur ris __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, agus __builtin_dedup_pack. Mar eisimpleir, leigidh builtin_dedup_pack leat dùblaidhean a thoirt air falbh bho liosta de sheòrsachan: a’ cleachdadh MyTypeList = TypeList<__builtin_dedup_pack …>; // bidh an seòrsa a thig às mar TypeList
- Nuair a thathar a’ dì-bhugachadh giùlan neo-mhìnichte le UBSan (-fsanitize=undefined -fsanitize-trap=undefined), tha fiosrachadh mu adhbhar na mearachd a-nis air a ghabhail a-steach san fhiosrachadh dì-bhugachaidh a chaidh a chruthachadh. Chaidh am bratach "-fsanitize-debug-trap-reasons" a chur ris gus an ìre mionaideachd ann am fiosrachadh mearachd a shònrachadh. Faodar a shuidheachadh gu "bunasach" airson tuairisgeulan coitcheann (me, "Cur thairis air cur-ris slàn-àireimh") agus "mionaideach" gus fiosrachadh mionaideach a thoirt a-steach (me, "cur thairis air cur-ris slàn-àireimh ainmichte ann an 'a + b'").
- Brataichean cruinneachaidh ùra air an cur ris:
- "-f[no-]sanitize-debug-trap-reasons" gus smachd a chumail air a bheil adhbharan ribe eisgeachd air an leabachadh ann am fiosrachadh dì-bhugachaidh nuair a thathar a’ cur ri chèile le modh "-fsanitize-trap".
- "-fsanitize=alloc-token", "-falloc-token-max", "-fsanitize-alloc-token-fast-abi", agus "-fsanitize-alloc-token-extended" gus comharran riarachaidh cuimhne a riaghladh.
- "-fmatrix-memory-layout" gus smachd a chumail air cruth cuimhne sheòrsachan maitrís (m.e. colbh-mòr airson colbh-mòr, sreath-mòr airson sreath-mòr).
- Tha feart "malloc_span" aig gnìomhan a-nis, coltach ris an fheart malloc ach a ghabhas buntainn ri gnìomhan a bhios a’ tilleadh structaran coltach ri span anns a bheil comharraiche agus raon leis a’ mheud no comharraiche gu deireadh a’ bhloca.
- Chaidh an feart "modular_format" a chur ris gus an cur an gnìomh a tha a dhìth gu statach den ghnìomh printf a thaghadh gu daineamaigeach aig àm ceangail.
- Chaidh innealan breithneachaidh is mion-sgrùdaidh statach a leudachadh, chaidh sgrùdaidhean ùra a chur ris (grunn dhusanan de leasachaidhean co-cheangailte ri breithneachadh).
- Chaidh feartan a bharrachd airson leudachaidhean SSE, AVX, agus AVX512 a chur ris a’ chùl-raon X86. Chaidh modhan togail a chur ris airson CPUan Intel stèidhichte air meanbh-ailtireachdan Wildcat Lake (-march=wildcatlake) agus Nova Lake (-march=novalake).
- Tha cùl-raon AArch64 a-nis a’ toirt taic do phròiseasairean Ampere Computing Ampere1C (ampere1c), Arm C1-Nano (c1-nano), Arm C1-Pro (c1-pro), Arm C1-Premium (c1-premium), agus Arm C1-Ultra (c1-ultra). Chaidh gnìomhan togte a bharrachd a chur ris airson stiùiridhean FCVTZ[US], FCVTN[US], FCVTM[US], FCVTP[US], agus FCVTA[US]. Chaidh taic do Gnìomh Ioma-Dreach (FMV) a dhèanamh seasmhach. Faodaidh luchd-cleachdaidh a-nis prìomhachas diofar dhreachan gnìomh a shàrachadh.
- Taic air a chur ris airson ailtireachd LoongArch32 (LA32R, LA32S).
- Cùl-deireadh leasaichte airson ailtireachd ARM, AMDGPU, RISC-V, LoongArch64, MIPS, WebAssembly, agus PowerPC.
Source: fosgailtenet.ru
