Tar éis sé mhí forbartha, tá LLVM 22.1.0 eisithe. Forbraíonn sé uirlisí (tiomsaitheoirí, uasmhéadaitheoirí, agus gineadóirí cóid) a thiomsaíonn cláir i gcód giotán idirmheánach de threoracha fíorúla cosúil le RISC (meaisín fíorúil íseal-leibhéil le córas uasmhéadaithe il-leibhéil). Is féidir an súdaichód a ghintear a thiontú ina chód meaisín do ardán sprice ar leith nó is féidir é a úsáid ag tiomsaitheoir díreach-in-am (JIT) chun treoracha meaisín a ghiniúint go díreach le linn fhorghníomhú cláir. Bunaithe ar theicneolaíochtaí LLVM, tá an tionscadal ag forbairt an tiomsaitheora Clang, ag tacú leis na teangacha ríomhchlárúcháin C, C++, agus Objective-C. Ag tosú leis an mbrainse 18.x, aistrigh an tionscadal go scéim uimhrithe leagan nua, ina n-úsáidtear scaoileadh 0 ("Uimh.0") le linn na forbartha, agus tugtar "Uimh.1" ar an gcéad leagan cobhsaí.
I measc na bhfeabhsuithe ar Clang 22:
- Cuireadh tacaíocht leis do chomharthaí leithdháilte cuimhne (Allocation Tokens) chun oibríochtaí leithdháilte cuimhne a mharcáil a dhéantar ag baint úsáide as feidhmeanna ar nós malloc le haitheantóir uathúil. Ligeann comharthaí leithdháilte faisnéis carn a struchtúrú, braiteadh sceitheadh cuimhne a shimpliú, agus grúpáil réad a chumasú bunaithe ar a gcuspóir nó ar a bpatrúin mhodhnúcháin (e.g., sonraí "te" a dheighilt ó shonraí "fuar"). Chun iad a chumasú, bain úsáid as an mbratach "-fsanitize=alloc-token".
- Gnéithe a bhaineann leis an teanga C:
- Tá dréacht-shonraíocht curtha i bhfeidhm ina sainmhínítear an mheicníocht forghníomhaithe iarchurtha "cur siar", rud a ligeann do ghníomhartha a bheith curtha i gcrích nuair a théann an raon feidhme reatha as feidhm. Tá an bhratach "-fdefer-ts" curtha leis chun tacaíocht "cur siar" a chumasú.
- Tá an fheidhm ionsuite __builtin_stack_address() curtha leis, ag léiriú na feidhme comhchosúla i GCC. Tugann an fheidhm seo an seoladh cruachta ar ais a scarann limistéar cruachta na feidhme reatha a ghlaoigh __builtin_stack_address() agus feidhmeanna ina dhiaidh sin a ghlaonn sí.
- Cumais atá á bhforbairt don chaighdeán C2y amach anseo:
- Cuireadh tacaíocht leis do lúba ainmnithe, rud a ligeann duit ainmneacha a shannadh do lúba agus ráitis switch, ar féidir iad seo a shonrú i ráitis break agus continue chun an lúb atá le scor a shainiú go sainráite. outer: for (int i = 0; i < IK; ++ i) { for (int j = 0; j < JK; ++ j) { continue; // téigh go CONT1 continue outer; // téigh go CONT2 // CONT1 } // CONT2 }
- Tá cur i bhfeidhm an macra ionsuite "__COUNTER__", atá deartha chun ainmneacha aitheantais uathúla a ghiniúint, leathnaithe agus curtha san áireamh sa chaighdeán. Tá teorainn de 2147483647 glao socraithe chuig an macra seo; má sháraítear an teorainn seo, ginfear earráid.
- Baineadh an rabhadh (-Wstatic-in-inline) agus feidhmeanna statach nó athróga laistigh de fheidhmeanna atá dearbhaithe mar "extern inline" in úsáid.
- Cumais atá sainmhínithe sa chaighdeán C23 C:
- Tacaíonn an comhad ceanntásc float.h anois leis na macraí FLT_SNAN, DBL_SNAN, agus LDBL_SNAN, a chuireann luachanna NaN comharthaíochta (rud a chruthaíonn eisceacht nuair a úsáidtear iad in oibríochtaí uimhríochta) i bhfeidhm do chineálacha snámhphointe, dúbailte, agus fada dúbailte.
- Deisíodh fabht inar measadh go raibh cineálacha éagsúla gan ainm comhoiriúnach laistigh den aonad aistriúcháin céanna má bhí na réimsí céanna acu.
- Tá an bhratach "-MG" a úsáidtear chun neamhaird a dhéanamh de chomhaid cheanntásca atá ar iarraidh le linn scanadh spleáchais sínte chuig treoracha "#embed" agus cuireann sí cosc anois ar an earráid "comhad gan aimsiú" nuair a bhíonn comhad a shonraítear i dtreoir "#embed" ar iarraidh.
- Gnéithe a bhaineann le C++:
- Cuireadh leis an gcumas ceangail struchtúrtha a úsáid i gcomhthéacs "constexpr", mar a forbraíodh sa tsonraíocht C++2c (C++26). Ciallaíonn sé seo gur féidir le tagairtí do léirithe tairiseacha a bheith ina léirithe tairiseacha anois. Tá tacaíocht curtha i bhfeidhm d'eagair agus do struchtúir shimplí (níl tacaíocht do thupail fós). constexpr int arr[] = {1, 2}; constexpr auto [x, y] = arr;
- Mar a cheanglaítear leis an gcaighdeán C++20, déantar srianta a thiontú anois go foirm chaighdeánach sula ndéantar iad a sheiceáil, rud a chuireann ar chumas teachtaireachtaí diagnóiseacha níos cruinne agus láimhseáil cheart earráidí ionadaíochta in argóintí teimpléid a úsáidtear in aitheantóirí coincheapa amháin.
- Cuireadh teaghlach feidhmeanna ionsuite leis "__builtin_[lt|gt|le|ge]_synthesizes_from_spaceship" chun a fháil amach an ndearnadh na hoibreoirí comparáide "<", ">", "<=", agus ">=" a shintéisiú ón oibreoir "<=>".
- Tá an paraiméadar "-Wincompatible-pointer-types" athraithe chun earráid a aschur in ionad rabhaidh. Chun filleadh ar an iompar roimhe seo, bain úsáid as an rogha "-Wno-error=incompatible-pointer-types".
- Cuireadh feidhmeanna ionsuite leis __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 shampla, ligeann builtin_dedup_pack duit dúblaigh a bhaint as liosta cineálacha: ag baint úsáide as MyTypeList = TypeList<__builtin_dedup_pack …>; // beidh an cineál a eascraíonn as sin ina TypeList
- Agus iompar neamhshainithe á dhífhabhtú le UBSan (-fsanitize=undefined -fsanitize-trap=undefined), cuirtear faisnéis faoi chúis na hearráide san áireamh anois san fhaisnéis dhífhabhtaithe a ghintear. Cuireadh an bhratach "-fsanitize-debug-trap-reasons" leis chun an leibhéal mionsonraí san fhaisnéis earráide a shonrú. Is féidir é a shocrú go "bunúsach" le haghaidh tuairiscí ginearálta (m.sh., "Ró-shreabhadh suimithe slánuimhir") agus "mionsonraithe" chun faisnéis mhionsonraithe a áireamh (m.sh., "ró-shreabhadh suimithe slánuimhir shínithe in 'a + b'").
- Cuireadh bratacha tiomsaitheora nua leis:
- "-f[no-]sanitize-debug-trap-reasons" chun rialú a dhéanamh ar cibé an bhfuil cúiseanna gaiste eisceachta leabaithe san fhaisnéis dífhabhtaithe agus iad á dtiomsú le mód "-fsanitize-trap".
- "-fsanitize=alloc-token", "-falloc-token-max", "-fsanitize-alloc-token-fast-abi", agus "-fsanitize-alloc-token-extended" chun comharthaí leithdháilte cuimhne a bhainistiú.
- "-fmatrix-memory-layout" chun leagan amach cuimhne cineálacha maitrís a rialú (e.g. colún-mór le haghaidh colún-mór, sraith-mór le haghaidh sraith-mór).
- Tá tréith "malloc_span" ag feidhmeanna anois, cosúil leis an tréith malloc ach infheidhme maidir le feidhmeanna a thugann struchtúir cosúil le rés ar ais ina bhfuil pointeoir agus réimse leis an méid nó pointeoir ag deireadh an bhloic.
- Cuireadh an tréith "modular_format" leis chun an cur i bhfeidhm statach nasctha den fheidhm printf a roghnú go dinimiciúil tráth an naisc.
- Tá uirlisí anailíse diagnóiseacha agus statach leathnaithe, tá seiceálacha nua curtha leis (roinnt dosaen feabhsuithe a bhaineann le diagnóis).
- Cuireadh gnéithe breise leis an gcúltaca X86 do na síntí SSE, AVX, agus AVX512. Cuireadh modhanna tógála leis do LAPanna Intel atá bunaithe ar mhicrea-ailtireachtaí Wildcat Lake (-march=wildcatlake) agus Nova Lake (-march=novalake).
- Tacaíonn cúltaca AArch64 anois leis na próiseálaithe 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). Cuireadh feidhmeanna breise ionsuite leis na treoracha FCVTZ[US], FCVTN[US], FCVTM[US], FCVTP[US], agus FCVTA[US]. Tá tacaíocht Il-Leagan Feidhme (FMV) cobhsaithe. Is féidir le húsáideoirí tosaíocht leaganacha feidhme éagsúla a shárú anois.
- Cuireadh tacaíocht leis d'ailtireacht LoongArch32 (LA32R, LA32S).
- Cúlchríocha feabhsaithe d'ailtireachtaí ARM, AMDGPU, RISC-V, LoongArch64, MIPS, WebAssembly, agus PowerPC.
Foinse: oscailtenet.ru
