Rhyddhau'r gyfres casglu LLVM 22

Ar Γ΄l chwe mis o ddatblygu, mae LLVM 22.1.0 wedi'i ryddhau. Mae'n datblygu offer (cyfansoddyddion, optimeiddwyr, a chynhyrchwyr cod) sy'n llunio rhaglenni i mewn i god bit canolradd o gyfarwyddiadau rhithwir tebyg i RISC (peiriant rhithwir lefel isel gyda system optimeiddio aml-lefel). Gellir trosi'r ffug-god a gynhyrchir yn god peiriant ar gyfer platfform targed penodol neu ei ddefnyddio gan grynhoydd mewn pryd (JIT) i gynhyrchu cyfarwyddiadau peiriant yn uniongyrchol yn ystod gweithredu rhaglen. Yn seiliedig ar dechnolegau LLVM, mae'r prosiect yn datblygu'r crynhoydd Clang, sy'n cefnogi'r ieithoedd rhaglennu C, C++, ac Objective-C. Gan ddechrau gyda'r gangen 18.x, newidiodd y prosiect i gynllun rhifo fersiynau newydd, yn Γ΄l pa un y defnyddir rhyddhad 0 ("N.0") yn ystod y datblygiad, a'r fersiwn sefydlog gyntaf wedi'i rhifo "N.1."

Mae gwelliannau yn Clang 22 yn cynnwys:

  • Ychwanegwyd cefnogaeth ar gyfer tocynnau dyrannu cof (Allocation Tokens) ar gyfer marcio gweithrediadau dyrannu cof a gyflawnir gan ddefnyddio ffwythiannau fel malloc gydag adnabyddwr unigryw. Mae tocynnau dyrannu yn caniatΓ‘u strwythuro gwybodaeth pentwr, symleiddio canfod gollyngiadau cof, a galluogi grwpio gwrthrychau yn seiliedig ar eu pwrpas neu batrymau addasu (e.e., gwahanu data "poeth" oddi wrth "oer"). I alluogi, defnyddiwch y faner "-fsanitize=alloc-token".
  • Nodweddion sy'n gysylltiedig Γ’'r iaith C:
    • Mae manyleb ddrafft sy'n diffinio'r mecanwaith gweithredu gohiriedig "gohirio" wedi'i weithredu, gan ganiatΓ‘u i gamau gweithredu gael eu gweithredu pan fydd y cwmpas cyfredol yn dod i ben. Mae'r faner "-fdefer-ts" wedi'i hychwanegu i alluogi cefnogaeth i "gohirio".
    • Mae'r ffwythiant adeiledig __builtin_stack_address() wedi'i ychwanegu, gan adlewyrchu'r ffwythiant tebyg yn GCC. Mae'r ffwythiant hwn yn dychwelyd y cyfeiriad pentwr sy'n gwahanu ardal pentwr y ffwythiant cyfredol a alwodd __builtin_stack_address() a'r ffwythiannau dilynol y mae'n eu galw.
  • Galluoedd sy'n cael eu datblygu ar gyfer y safon C2y yn y dyfodol:
    • Ychwanegwyd cefnogaeth ar gyfer dolenni wedi'u henwi, sy'n eich galluogi i aseinio enwau i ddolenni a datganiadau newid, y gellir eu pennu mewn datganiadau torri a pharhau i ddiffinio'n benodol y ddolen i adael ohoni. outer: for (int i = 0; i < IK; ++ i) { for (int j = 0; j < JK; ++ j) { continue; // ewch i CONT1 parhau outer; // ewch i CONT2 // CONT1 } // CONT2 }
    • Mae gweithrediad y macro "__COUNTER__" adeiledig, a gynlluniwyd i gynhyrchu enwau adnabod unigryw, wedi'i ehangu a'i gynnwys yn y safon. Mae terfyn o 2147483647 o alwadau i'r macro hwn wedi'i osod; bydd mynd y tu hwnt i'r terfyn hwn yn cynhyrchu gwall.
    • Tynnwyd y rhybudd (-Wstatic-in-inline) wrth ddefnyddio ffwythiannau statig neu newidynnau y tu mewn i ffwythiannau a ddatganwyd fel "extern inline".
  • Galluoedd a ddiffinnir yn y safon C23 C:
    • Mae'r ffeil pennawd float.h bellach yn cefnogi'r macros FLT_SNAN, DBL_SNAN, ac LDBL_SNAN, sy'n gweithredu gwerthoedd NaN wedi'u signalu (gan achosi eithriad pan gΓ’nt eu defnyddio mewn gweithrediadau rhifyddeg) ar gyfer mathau float, double, a long double.
    • Trwsiwyd nam lle cafodd gwahanol fathau dienw eu trin fel rhai cydnaws o fewn yr un uned gyfieithu os oedd ganddynt yr un meysydd.
    • Mae'r faner "-MG" a ddefnyddir i anwybyddu ffeiliau pennawd coll yn ystod sganio dibyniaethau wedi'i hymestyn i gyfarwyddebau "#embed" ac mae bellach yn atal y gwall "ffeil heb ei chanfod" pan fydd ffeil a bennir mewn cyfarwyddeb "#embed" ar goll.
  • Nodweddion sy'n gysylltiedig Γ’ C++:
    • Ychwanegwyd y gallu i ddefnyddio rhwymiadau strwythuredig yng nghyd-destun "constexpr", fel y'i datblygwyd yn y fanyleb C++2c (C++26). Mae hyn yn golygu y gall cyfeiriadau at fynegiadau cyson fod yn fynegiadau cyson eu hunain bellach. Gweithredir cefnogaeth ar gyfer araeau a strwythurau syml (nid yw tiwples yn cael eu cefnogi eto). constexpr int arr[] = {1, 2}; constexpr auto [x, y] = arr;
    • Fel sy'n ofynnol gan y safon C++20, mae cyfyngiadau bellach yn cael eu trosi i ffurf safonol cyn cael eu gwirio, gan ganiatΓ‘u ar gyfer negeseuon diagnostig mwy cywir a thrin gwallau amnewid yn briodol mewn dadleuon templed a ddefnyddir mewn cysyniad-idau yn unig.
    • Ychwanegwyd teulu o ffwythiannau adeiledig "__builtin_[lt|gt|le|ge]_synthesizes_from_spaceship" i ddarganfod a gafodd y gweithredwyr cymhariaeth "<", ">", "<=", a ">=" eu syntheseiddio o'r gweithredwr "<=>".
    • Mae'r paramedr "-Wincompatible-pointer-types" wedi'i newid i allbynnu gwall yn lle rhybudd. I ddychwelyd i'r ymddygiad blaenorol, defnyddiwch yr opsiwn "-Wno-error=incompatible-pointer-types".
  • Ychwanegwyd ffwythiannau adeiledig __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, a __builtin_dedup_pack. Er enghraifft, mae builtin_dedup_pack yn caniatΓ‘u ichi gael gwared ar ddyblygiadau o restr o fathau: gan ddefnyddio MyTypeList = TypeList<__builtin_dedup_pack …>; // y math sy'n deillio o hyn fydd TypeList
  • Wrth ddadfygio ymddygiad heb ei ddiffinio gydag UBSan (-fsanitize=undefined -fsanitize-trap=undefined), mae gwybodaeth am achos y gwall bellach wedi'i chynnwys yn y wybodaeth ddadfygio a gynhyrchir. Ychwanegwyd y faner "-fsanitize-debug-trap-reasons" i nodi lefel y manylder mewn gwybodaeth am y gwall. Gellir ei gosod i "sylfaenol" ar gyfer disgrifiadau cyffredinol (e.e., "Gorlif adio cyfanrifau") a "manwl" i gynnwys gwybodaeth fanwl (e.e., "gorlif adio cyfanrifau wedi'i lofnodi yn 'a + b'").
  • Ychwanegwyd baneri casglwr newydd:
    • "-f[no-]sanitize-debug-trap-reasons" i reoli a yw rhesymau trap eithriad wedi'u hymgorffori yn y wybodaeth dadfygio wrth lunio gyda modd "-fsanitize-trap".
    • "-fsanitize=alloc-token", "-falloc-token-max", "-fsanitize-alloc-token-fast-abi", a "-fsanitize-alloc-token-extended" i reoli tocynnau dyrannu cof.
    • "-fmatrix-memory-layout" i reoli cynllun cof mathau o fatrics (e.e. colofn-major ar gyfer colofn-major, rhes-major ar gyfer rhes-major).
  • Mae gan ffwythiannau nawr briodwedd "malloc_span", tebyg i'r briodwedd malloc ond yn berthnasol i ffwythiannau sy'n dychwelyd strwythurau tebyg i rychwant sy'n cynnwys pwyntydd a maes gyda'r maint neu bwyntydd i ddiwedd y bloc.
  • Ychwanegwyd y priodoledd "modular_format" i ddewis yn ddeinamig y gweithrediad sydd ei angen ar gyfer y ffwythiant printf sydd wedi'i gysylltu'n statig ar adeg y cysylltiad.
  • Mae offer dadansoddi diagnostig a statig wedi'u hehangu, mae gwiriadau newydd wedi'u hychwanegu (sawl dwsin o welliannau sy'n gysylltiedig Γ’ diagnostig).
  • Mae manylion mewnol ychwanegol ar gyfer yr estyniadau SSE, AVX, ac AVX512 wedi'u hychwanegu at gefn X86. Mae moddau adeiladu wedi'u hychwanegu ar gyfer CPUau Intel yn seiliedig ar bensaernΓ―aeth micro Wildcat Lake (-march=wildcatlake) a Nova Lake (-march=novalake).
  • Mae cefndir AArch64 bellach yn cefnogi proseswyr Ampere Computing Ampere1C (ampere1c), Arm C1-Nano (c1-nano), Arm C1-Pro (c1-pro), Arm C1-Premium (c1-premium), ac Arm C1-Ultra (c1-ultra). Ychwanegwyd swyddogaethau adeiledig ychwanegol ar gyfer y cyfarwyddiadau FCVTZ[US], FCVTN[US], FCVTM[US], FCVTP[US], ac FCVTA[US]. Mae cefnogaeth i Fersiynau Aml-Swyddogaethau (FMV) wedi'i sefydlogi. Gall defnyddwyr bellach ddiystyru blaenoriaeth gwahanol fersiynau o swyddogaethau.
  • Ychwanegwyd cefnogaeth ar gyfer pensaernΓ―aeth LoongArch32 (LA32R, LA32S).
  • Cefndiroedd gwell ar gyfer pensaernΓ―aethau ARM, AMDGPU, RISC-V, LoongArch64, MIPS, WebAssembly, a PowerPC.

Ffynhonnell: opennet.ru

Prynu gwesteio dibynadwy ar gyfer gwefannau sydd Γ’ diogelwch DDoS, gweinyddwyr VPS VDS πŸ”₯ Prynu cynnal gwefannau dibynadwy gyda diogelwch DDoS, gweinyddion VPS VDS | ProHoster