Hoʻokuʻu ʻia o ka LLVM 22 compiler suite

Ma hope o ʻeono mahina o ka hoʻomohala ʻana, ua hoʻokuʻu ʻia ʻo LLVM 22.1.0. Hoʻomohala ia i nā mea hana (nā mea hōʻuluʻulu, nā mea hoʻonui, a me nā mea hana code) e hōʻuluʻulu i nā polokalamu i loko o ka bitcode waena o nā kuhikuhi virtual like RISC (kahi mīkini virtual haʻahaʻa me kahi ʻōnaehana hoʻonui multi-level). Hiki ke hoʻololi ʻia ka pseudocode i hana ʻia i code mīkini no kahi kahua i hāʻawi ʻia a i ʻole hoʻohana ʻia e kahi mea hōʻuluʻulu manawa kūpono (JIT) e hana pololei i nā kuhikuhi mīkini i ka wā o ka hoʻokō ʻana o ka polokalamu. Ma muli o nā ʻenehana LLVM, ke hoʻomohala nei ka papahana i ka mea hōʻuluʻulu Clang, e kākoʻo ana i nā ʻōlelo papahana C, C++, a me Objective-C. E hoʻomaka ana me ka lālā 18.x, ua hoʻololi ka papahana i kahi papahana helu mana hou, e like me ka hoʻokuʻu ʻana o 0 ("N.0") i hoʻohana ʻia i ka wā o ka hoʻomohala ʻana, a ʻo ka mana paʻa mua i helu ʻia ʻo "N.1."

Ma waena o nā hoʻomaikaʻi ma Clang 22:

  • Ua hoʻohui ʻia ke kākoʻo no nā hōʻailona hoʻokaʻawale hoʻomanaʻo (Allocation Tokens) no ka hōʻailona ʻana i nā hana hoʻokaʻawale hoʻomanaʻo i hana ʻia me ka hoʻohana ʻana i nā hana e like me malloc me kahi mea hōʻike kū hoʻokahi. ʻAe nā hōʻailona hoʻokaʻawale no ka hoʻonohonoho ʻana i ka ʻike puʻu, ka hoʻomaʻalahi ʻana i ka ʻike ʻana i ka leak hoʻomanaʻo, a me ka hiki ke hoʻohui i nā mea e pili ana i kā lākou kumu a i ʻole nā ​​​​ʻano hoʻololi (e.g., ka hoʻokaʻawale ʻana i ka ʻikepili "wela" mai ka "anuanu"). No ka hoʻā ʻana, e hoʻohana i ka hae "-fsanitize=alloc-token".
  • Nā hiʻohiʻona e pili ana i ka ʻōlelo C:
    • Ua hoʻokō ʻia kahi kikoʻī kikoʻī e wehewehe ana i ke ʻano hoʻokō hoʻopaneʻe "defer", e ʻae ana i nā hana e hoʻokō ʻia ke puka ka laulā o kēia manawa. Ua hoʻohui ʻia ka hae "-fdefer-ts" e hiki ai ke kākoʻo "defer".
    • Ua hoʻohui ʻia ka hana i kūkulu ʻia ʻo __builtin_stack_address(), e hoʻohālike ana i ka hana like ma GCC. Hoʻihoʻi kēia hana i ka helu wahi stack e hoʻokaʻawale ana i ka ʻāpana stack o ka hana o kēia manawa i kapa ʻia ʻo __builtin_stack_address() a me nā hana ma hope āna e kāhea ai.
  • Hoʻomohala ʻia nā mana no ka maʻamau C2y e hiki mai ana:
    • Ua hoʻohui ʻia ke kākoʻo no nā loops i kapa ʻia, kahi e hiki ai iā ʻoe ke hāʻawi i nā inoa i nā loops a me nā ʻōlelo hoʻololi, hiki ke kuhikuhi ʻia i loko o nā ʻōlelo break a me continue e wehewehe pono i ka loop e puka 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 hoʻonui ʻia a ua hoʻokomo ʻia i loko o ke kūlana ka hoʻokō ʻana o ka macro "__COUNTER__" i kūkulu ʻia, i hoʻolālā ʻia e hana i nā inoa hōʻike kū hoʻokahi. Ua hoʻonohonoho ʻia kahi palena o 2147483647 mau kāhea i kēia macro; ʻo ka ʻoi aku ma mua o kēia palena e hana i kahi hewa.
    • Ua wehe ʻia ka ʻōlelo aʻo (-Wstatic-in-inline) i ka wā e hoʻohana ai i nā hana static a i ʻole nā ​​​​​​loli i loko o nā hana i haʻi ʻia he "extern inline".
  • Nā mana i wehewehe ʻia ma ka maʻamau C23 C:
    • Ke kākoʻo nei ka faila poʻomanaʻo float.h i nā macros FLT_SNAN, DBL_SNAN, a me LDBL_SNAN, nāna e hoʻokō i nā waiwai NaN i hōʻailona ʻia (e hana ana i kahi ʻokoʻa ke hoʻohana ʻia i nā hana arithmetic) no nā ʻano float, pālua, a me ka lōʻihi pālua.
    • Ua hoʻoponopono ʻia kahi hewa kahi i mālama ʻia ai nā ʻano like ʻole i kapa ʻole ʻia e like me ke kūlike i loko o ka ʻāpana unuhi like inā he mau kahua like ko lākou.
    • Ua hoʻonui ʻia ka hae "-MG" i hoʻohana ʻia e hoʻowahāwahā i nā faila poʻomanaʻo i nalowale i ka wā o ka nānā ʻana i ka hilinaʻi i nā kuhikuhi "#embed" a ke kāohi nei i ka hewa "file not found" ke nalowale kahi faila i kuhikuhi ʻia ma kahi kuhikuhi "#embed".
  • Nā hiʻohiʻona pili C++:
    • Ua hoʻohui ʻia ka hiki ke hoʻohana i nā hoʻopaʻa i hoʻonohonoho ʻia i loko o ka pōʻaiapili "constexpr", e like me ka mea i hoʻomohala ʻia ma ka kikoʻī C++2c (C++26). ʻO ke ʻano kēia, hiki i nā kuhikuhi i nā hōʻike mau ke lilo i mau hōʻike mau. Hoʻokō ʻia ke kākoʻo no nā arrays a me nā ʻano maʻalahi (ʻaʻole i kākoʻo ʻia nā tuples). constexpr int arr[] = {1, 2}; constexpr auto [x, y] = arr;
    • E like me ke koi ʻia e ke kūlana C++20, ua hoʻololi ʻia nā palena i ke ʻano maʻamau ma mua o ka nānā ʻia ʻana, e ʻae ana i nā leka diagnostic pololei a me ka lawelawe pono ʻana i nā hewa pani i nā hoʻopaʻapaʻa template i hoʻohana wale ʻia ma nā concept-ids.
    • Ua hoʻohui ʻia kahi ʻohana o nā hana i kūkulu ʻia "__builtin_[lt|gt|le|ge]_synthesizes_from_spaceship" e ʻike ai inā ua hoʻohui ʻia nā mea hoʻohālikelike "<", ">", "<=", a me ">=" mai ka mea hoʻohālikelike "<=>".
    • Ua hoʻololi ʻia ke koho "-Wincompatible-pointer-types" e hoʻopuka i kahi hewa ma kahi o kahi ʻōlelo aʻo. No ka hoʻi ʻana i ke ʻano ma mua, e hoʻohana i ke koho "-Wno-error=incompatible-pointer-types".
  • Ua hoʻohui ʻia nā hana i kūkulu ʻia __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 me __builtin_dedup_pack. No ka laʻana, hiki iā ʻoe ke wehe i nā mea like ʻole mai kahi papa inoa o nā ʻano: me ka hoʻohana ʻana iā MyTypeList = TypeList<__builtin_dedup_pack …>; // ʻo ke ʻano hopena e lilo ia i TypeList
  • I ka wā e debugging ai i ke ʻano i wehewehe ʻole ʻia me UBSan (-fsanitize=undefined -fsanitize-trap=undefined), ua hoʻokomo ʻia ka ʻike kumu hewa i ka ʻike debug i hana ʻia. Ua hoʻohui ʻia ka hae "-fsanitize-debug-trap-reasons" e kuhikuhi i ka pae o nā kikoʻī i ka ʻike hewa. Hiki ke hoʻonohonoho ʻia i "kumu" no nā wehewehe laulā (e.g., "Integer addition overflowed") a me "detailed" e hoʻokomo i ka ʻike kikoʻī (e.g., "signed integer addition overflow in 'a + b'").
  • Ua hoʻohui ʻia nā hae hōʻuluʻulu hou:
    • "-f[no-]sanitize-debug-trap-reasons" e kāohi inā ua hoʻokomo ʻia nā kumu pahele ʻokoʻa i ka ʻike debug i ka wā e hōʻuluʻulu ʻia ai me ke ʻano "-fsanitize-trap".
    • "-fsanitize=alloc-token", "-falloc-token-max", "-fsanitize-alloc-token-fast-abi", a me "-fsanitize-alloc-token-extended" e hoʻokele i nā hōʻailona hoʻokaʻawale hoʻomanaʻo.
    • "-fmatrix-memory-layout" e kāohi i ka hoʻonohonoho hoʻomanaʻo o nā ʻano matrix (e.g. column-major no column-major, row-major no row-major).
  • I kēia manawa, loaʻa i nā hana kahi ʻano "malloc_span", e like me ka ʻano malloc akā pili i nā hana e hoʻihoʻi ana i nā ʻano like span e loaʻa ana kahi pointer a me kahi kahua me ka nui a i ʻole kahi pointer i ka hopena o ka poloka.
  • Ua hoʻohui ʻia ka hiʻohiʻona "modular_format" e koho ikaika i ka hoʻokō static i koi ʻia o ka hana printf i ka manawa loulou.
  • Ua hoʻonui ʻia nā mea hana loiloi diagnostic a me static, ua hoʻohui ʻia nā hōʻoia hou (he mau kakini mau hoʻomaikaʻi e pili ana i ka diagnostic).
  • Ua hoʻohui ʻia nā mea pono hou no nā hoʻonui SSE, AVX, a me AVX512 i ka ʻaoʻao hope o X86. Ua hoʻohui ʻia nā ʻano hana kūkulu no nā CPU Intel e pili ana i nā microarchitectures Wildcat Lake (-march=wildcatlake) a me Nova Lake (-march=novalake).
  • Ke kākoʻo nei ka ʻaoʻao hope o AArch64 i nā kaʻina hana Ampere Computing Ampere1C (ampere1c), Arm C1-Nano (c1-nano), Arm C1-Pro (c1-pro), Arm C1-Premium (c1-premium), a me Arm C1-Ultra (c1-ultra). Ua hoʻohui ʻia nā hana i kūkulu ʻia no nā ʻōkuhi FCVTZ[US], FCVTN[US], FCVTM[US], FCVTP[US], a me FCVTA[US]. Ua hoʻopaʻa ʻia ke kākoʻo Function Multi-Versioning (FMV). Hiki i nā mea hoʻohana ke kāpae i ka mea nui o nā mana hana like ʻole.
  • Ua hoʻohui ʻia ke kākoʻo no ka hoʻolālā ʻana o LoongArch32 (LA32R, LA32S).
  • Nā hoʻomaikaʻi hope no nā hoʻolālā ARM, AMDGPU, RISC-V, LoongArch64, MIPS, WebAssembly, a me PowerPC.

Source: opennet.ru

E kūʻai i ka hoʻokipa hilinaʻi no nā pūnaewele me ka pale DDoS, nā kikowaena VPS VDS 🔥 E kūʻai i ka hoʻokipa pūnaewele hilinaʻi me ka pale DDoS, nā kikowaena VPS VDS | ProHoster