Fa'asa'olotoina le seti LLVM 22 tu'ufa'atasi

A maeʻa masina e ono o le atinaʻeina, ua faʻalauiloa mai le LLVM 22.1.0. E atiina ae ni meafaigaluega (compilers, optimizers, ma code generators) e faʻapipiʻi ai polokalame i totonu o le bitcode vaeluaga o faʻatonuga faʻapitoa e pei o le RISC (o se masini faʻapitoa maualalo ma se faiga faʻaleleia tele-tulaga). E mafai ona liua le pseudocode ua gaosia i totonu o le code masini mo se faʻavae faʻamoemoeina pe faʻaaogaina e se just-in-time (JIT) compiler e faʻatupu ai faʻatonuga masini saʻo i le taimi o le faʻatinoina o le polokalame. E faʻavae i luga o tekinolosi LLVM, o loʻo atiaʻe e le poloketi le Clang compiler, e lagolagoina ai gagana polokalame C, C++, ma Objective-C. Amata i le lala 18.x, na sui le poloketi i se faiga fou o numera o lomiga, e tusa ai ma le faʻasalalauga 0 ("N.0") e faʻaaogaina i le taimi o le atinaʻeina, ma o le uluai lomiga mautu ua faʻanumeraina "N.1."

Faatasi ai ma faʻaleleia i le Clang 22:

  • Ua fa'aopoopoina le lagolago mo fa'ailoga vaevaeina o manatua (Allocation Tokens) mo le fa'ailogaina o galuega vaevaeina o manatua e fa'atinoina e fa'aaoga ai galuega e pei o le malloc fa'atasi ai ma se fa'ailoga tulaga ese. O fa'ailoga vaevaeina e mafai ai ona fa'atulaga fa'amatalaga o le heap, fa'afaigofieina le iloa o le tafe o manatua, ma fa'atagaina le fa'aputuina o mea faitino e fa'atatau i lo latou fa'amoemoega po'o mamanu o suiga (e.g., vavae'eseina fa'amatalaga "vevela" mai le "malulu"). Mo le fa'agaoioia, fa'aaoga le fu'a "-fsanitize=alloc-token".
  • O vaega e fesoʻotaʻi ma le gagana C:
    • Ua fa'atinoina se fa'amatalaga fa'ata'ita'i e fa'amatalaina ai le faiga fa'atino fa'atuai "defer", e mafai ai ona fa'atinoina gaioiga pe a uma le lautele o lo'o iai nei. Ua fa'aopoopoina le fu'a "-fdefer-ts" e fa'agaoioia ai le lagolago "defer".
    • Ua fa'aopoopoina le galuega fa'atino ua uma ona fausia __builtin_stack_address(), e fa'ata'ita'i i le galuega fa'atino tutusa i le GCC. O lenei galuega fa'atino e toe fa'afo'i mai ai le tuatusi o le fa'aputuga e vavae'ese ai le vaega o le fa'aputuga o le galuega fa'atino o lo'o iai nei lea na vala'auina le __builtin_stack_address() ma galuega fa'atino o lo'o mulimuli mai na vala'auina.
  • Gafatia o lo'o atia'e mo le fa'ata'ita'iga C2y i le lumana'i:
    • Ua fa'aopoopoina le lagolago mo ni loops ua faaigoaina, lea e mafai ai ona e tofia ni igoa i loops ma switch statements, lea e mafai ona fa'amaoti mai i break ma continue statements e fa'amatala manino ai le loop e alu ese mai ai. outer: for (int i = 0; i < IK; ++ i) { for (int j = 0; j < JK; ++ j) { continue; // go to CONT1 continue outer; // go to CONT2 // CONT1 } // CONT2 }
    • Ua fa'alauteleina ma aofia i le tulaga masani le fa'atinoina o le macro "__COUNTER__" ua fausia i totonu, ua mamanuina e fa'atupu ai ni igoa fa'ailoa tulaga ese. Ua setiina se tapula'a o le 2147483647 vala'au i lenei macro; o le sili atu i lenei tapula'a o le a fa'atupuina ai se mea sese.
    • Ua aveese le lapataiga (-Wstatic-in-inline) pe a faʻaaogaina galuega faʻatino tumau poʻo fesuiaʻiga i totonu o galuega faʻatino ua faʻalauiloaina o le "extern inline".
  • Gafatia fa'amatalaina ile C23 C fa'ata'ita'iga:
    • Ua lagolagoina nei e le faila ulutala float.h ia macros FLT_SNAN, DBL_SNAN, ma le LDBL_SNAN, lea e faʻatinoina ai tau NaN ua faʻailoaina (mafua ai se tuusaunoaga pe a faʻaaogaina i galuega faʻatatau) mo ituaiga float, double, ma long double.
    • Ua fa'asa'oina se fa'aletonu lea na fa'aaogaina ai ituaiga fa'aliliu eseese e le'i ta'ua o ni mea e fetaui i totonu o le iunite fa'aliliu e tasi pe afai e tutusa a latou fanua.
    • O le fu'a "-MG" e fa'aaogaina e le amana'ia ai faila ulutala o lo'o misi i le taimi o le su'esu'eina o le fa'alagolago ua fa'alauteleina i fa'atonuga "#embed" ma ua taofia nei le sese "file not found" pe a misi se faila o lo'o fa'amaoti mai i se fa'atonuga "#embed".
  • C++ uiga fa'atatau:
    • Ua fa'aopoopoina le mafai ona fa'aogaina ni fusi fa'atulagaina i le tulaga "constexpr", e pei ona atia'e i le fa'amatalaga C++2c (C++26). O lona uiga o fa'asinomaga i fa'aupuga tumau e mafai nei ona avea ma fa'aupuga tumau. Ua fa'atinoina le lagolago mo fa'asologa ma fausaga faigofie (e le'i lagolagoina ni tuples). constexpr int arr[] = {1, 2}; constexpr auto [x, y] = arr;
    • E pei ona manaʻomia e le tulaga faʻatonuina o le C++20, o tapulaʻa ua liua nei i le tulaga faʻatonuina aʻo leʻi siakiina, ma mafai ai ona faia ni feʻau faʻamaonia saʻo ma taulimaina lelei ai mea sese o le suiga i finauga faʻataʻitaʻiga e faʻaaogaina naʻo i totonu o concept-ids.
    • Ua fa'aopoopoina se aiga o galuega fa'atino ua uma ona fausia "__builtin_[lt|gt|le|ge]_synthesizes_from_spaceship" e iloa ai pe na fa'apipi'iina fa'agaioiga fa'atusatusaga "<", ">", "<=", ma le ">=" mai le fa'agaioiga "<=>".
    • Ua suia le parakalafa "-Wincompatible-pointer-types" e fa'aalia ai se mea sese nai lo se lapata'iga. Ina ia toe fo'i i le amioga muamua, fa'aaoga le filifiliga "-Wno-error=incompatible-pointer-types".
  • Ua fa'aopoopoina galuega fa'atino ua fausia i totonu __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, ma le __builtin_dedup_pack. Mo se fa'ata'ita'iga, e mafai ai e le builtin_dedup_pack ona e aveese ni kopi mai se lisi o ituaiga: fa'aaoga le MyTypeList = TypeList<__builtin_dedup_pack …>; // o le ituaiga e maua mai ai o le TypeList
  • A fa'aleleia amioga e le'i fa'amatalaina i le UBSan (-fsanitize=undefined -fsanitize-trap=undefined), o fa'amatalaga e mafua ai le sese ua aofia nei i fa'amatalaga e fa'aleleia ai mea sese ua gaosia. Ua fa'aopoopoina le fa'ailoga "-fsanitize-debug-trap-reasons" e fa'amaoti ai le tulaga o fa'amatalaga auiliili i fa'amatalaga sese. E mafai ona setiina i le "fa'avae" mo fa'amatalaga lautele (e.g., "Ua tele naua le fa'aopoopoga o le numera atoa") ma le "auiliili" e aofia ai fa'amatalaga auiliili (e.g., "ua tele naua le fa'aopoopoga o le numera atoa ua sainia i le 'a + b'").
  • Fa'aopoopo fu'a fa'aopoopo fou:
    • "-f[no-]sanitize-debug-trap-reasons" e pulea ai pe o fa'apipi'i mafua'aga o le mailei tuusaunoaga i fa'amatalaga debug pe a fa'apipi'iina i le faiga "-fsanitize-trap".
    • "-fsanitize=alloc-token", "-falloc-token-max", "-fsanitize-alloc-token-fast-abi", ma le "-fsanitize-alloc-token-extended" e pulea ai fa'ailoga o le tufatufaina o manatua.
    • "-fmatrix-memory-layout" e pulea ai le fa'atulagaga o le manatua o ituaiga matrix (e.g. column-major mo le column-major, row-major mo le row-major).
  • Ua iai nei i galuega faatino se uiga "malloc_span", e tutusa ma le uiga malloc ae e talafeagai mo galuega faatino e toe faafoi mai ai ni fausaga e pei o le span o loo iai se faasino ma se fanua e iai le tele po o se faasino i le pito o le poloka.
  • Ua fa'aopoopoina le uiga "modular_format" e filifili fa'aonaponei ai le fa'atinoga feso'ota'i fa'a-static mana'omia o le galuega faatino printf i le taimi feso'ota'i.
  • Ua fa'alauteleina meafaigaluega mo su'esu'ega fa'ama'i ma au'ili'iliga tumau, ua fa'aopoopoina fo'i siaki fou (e tele fa'aleleiga e feso'ota'i ma su'esu'ega).
  • Ua fa'aopoopoina isi mea totino mo fa'aopoopoga SSE, AVX, ma AVX512 i le X86 backend. Ua fa'aopoopoina fo'i ni faiga fau mo Intel CPUs e fa'avae i luga o le Wildcat Lake (-march=wildcatlake) ma le Nova Lake (-march=novalake) microarchitectures.
  • Ua lagolagoina nei e le AArch64 backend le Ampere Computing Ampere1C (ampere1c), Arm C1-Nano (c1-nano), Arm C1-Pro (c1-pro), Arm C1-Premium (c1-premium), ma le Arm C1-Ultra (c1-ultra) processors. Ua fa'aopoopoina isi galuega fa'atino ua uma ona fausia mo fa'atonuga o le FCVTZ[US], FCVTN[US], FCVTM[US], FCVTP[US], ma le FCVTA[US]. Ua fa'amautuina le lagolago a le Function Multi-Versioning (FMV). Ua mafai nei e tagata fa'aoga ona suia le fa'amuamua o fa'aliliuga eseese o galuega fa'atino.
  • Fa'aopoopo le lagolago mo le fausaga o le LoongArch32 (LA32R, LA32S).
  • Fa'aleleia atili o backends mo ARM, AMDGPU, RISC-V, LoongArch64, MIPS, WebAssembly, ma PowerPC architectures.

puna: opennet.ru

Faʻatau talimalo faʻatuatuaina mo nofoaga ma DDoS puipuiga, VPS VDS servers 🔥 Fa'atau le 'upega tafa'ilagi talimalo fa'atuatuaina ma le puipuiga DDoS, 'au'aunaga VPS VDS | ProHoster