Scaoileadh sraith tiomsaithe LLVM 22

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

Ceannaigh óstáil iontaofa do shuímh le cosaint DDoS, freastalaithe VPS VDS 🔥 Ceannaigh óstáil gréasáin iontaofa le cosaint DDoS, freastalaithe VPS VDS | ProHoster