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

Ma hope o ʻeono mahina o ka hoʻomohala ʻana, hōʻike ʻia ka hoʻokuʻu papahana LLVM 21.1.0. Hoʻomohala ʻo ia i nā mea hana (nā mea hoʻohui, optimizers a me nā code generators) e hōʻuluʻulu i nā papahana i loko o ka bitcode waena o nā ʻōlelo aʻoaʻo virtual e like me RISC (mekini haʻahaʻa haʻahaʻa me kahi ʻōnaehana hoʻonohonoho 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 hoʻohana ʻia e kahi mea hoʻopili JIT e hana pololei i nā kuhikuhi mīkini i ka wā o ka hoʻokō ʻana o ka papahana. Ma muli o nā ʻenehana LLVM, hoʻomohala ka papahana i ka Clang compiler, 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 hoʻolālā helu helu hou, e like me ka hoʻokuʻu ʻana o ka zero ("N.0") i hoʻohana ʻia i ka wā o ka hoʻomohala ʻana, a ua hoʻolako ʻia ka mana paʻa mua me ka helu "N.1".

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

  • Nā hiʻohiʻona pili C++:
    • Ma ka hoʻohālikelike me GCC, ua hoʻokō ʻia ka hiki ke hoʻohana i nā huaʻōlelo mau i nā mea hoʻokomo assembler i wehewehe ʻia e ke kuhikuhi "asm": int foo() { asm((std::string_view("nop"))::: (std::string_view("memory"))); }
    • Hoʻohui ʻia nā ʻano like ʻole o nā ʻōlelo "hou" a me "delete" e kākoʻo ana i ka hoʻopaʻapaʻa "std::type_identity" ", kahi e hiki ai iā ʻoe ke kuhikuhi i ka ʻike e pili ana i ke ʻano o ka mea i hoʻokaʻawale ʻia a hoʻokuʻu ʻia paha.
    • Hoʻohui i ka hiki ke loiloi i nā hana lambda e hopu i nā paʻa i kūkulu ʻia i ka manawa hōʻuluʻulu i ka pōʻaiapili o kahi ʻōlelo mau.
  • Nā hiʻohiʻona e pili ana i ka maʻamau C++2c (C++26) e hiki mai ana:
    • Kākoʻo nā paʻa i kūkulu ʻia i ka "..." syntax e kuhikuhi i nā pūʻolo e hopu i ke koena helu o nā mea i ke kaʻina i hāʻawi ʻia. kaʻa [x,y,z] = f(); // nā mea hoʻololi x, y, z e loaʻa i nā mea ʻekolu i hoʻihoʻi ʻia e f(). kaʻa [...xs] = f(); // E loaʻa i ka pūʻolo xs nā mea a pau i hoʻihoʻi ʻia e f(). kaʻa [x, ... hoʻomaha] = f(); // x e loaʻa ka mea mua, a ʻo ka hoʻomaha ke koena. kaʻa [x, y, ...hoʻomaha] = f(); // X e komo ka mea mua, y ka lua, a me ka koena ke kolu. kaʻa [x, ... hoʻomaha, z] = f(); // X e komo ka mua, koena ka lua, a me ka z i ke kolu.
    • Kākoʻo hoʻohui ʻia no "Trivial Relocatability" o nā ʻano, e ʻae ai i ka hoʻoikaika ʻana i ka neʻe ʻana o nā mea o kahi ʻano i hāʻawi ʻia e ka cloning iā lākou i ka hoʻomanaʻo me ke kāhea ʻole ʻana i nā mea kūkulu a i ʻole nā ​​​​mea luku. Hoʻokō ʻia nā waiwai memberwise_trivially_relocatable a memberwise_replaceable no nā papa, a ua hoʻohui ʻia nā hana trivially_relocate_at a me trivially_relocate no ka neʻe haʻahaʻa o hoʻokahi mea a ʻoi aku paha.
    • Hiki ke hoʻohana i ka paʻa i kūkulu ʻia ma ke ʻano he kūlana inā a hoʻololi i nā ʻōlelo.
    • Hoʻokomo i ke kākoʻo no ka hoʻopili ʻana i ka hana nui i kahi module honua a me ka wehewehe ʻana i ka hana nui i nā modules i kapa ʻia.
  • Hoʻomohala ʻia nā mana no ka maʻamau C2y e hiki mai ana:
    • Hoʻopaʻa ʻia ka hana i wehewehe ʻole ʻia i ka wā e hoʻohana ai i nā hōʻike void i kekahi mau pōʻaiapili, e like me "(void)(void)1;".
    • ʻAʻole ʻae ʻia e hoʻopau i kahi faila kumu me kahi ʻano laina hou.
    • Hoʻohui ʻia nā prefix hou no nā huaʻōlelo octal — 0o a me 0O, a me nā kaʻina pakele octal a me hexadecimal "\o{…}" a me \x{…}. Hoʻopau ʻia ke kākoʻo no nā huaʻōlelo octal 0xxx. No ka laʻana, "0o123" a me "\o{123}" ma kahi o "0123".
    • Hoʻohui ʻia ka mea hoʻohana "_Countof" e hoʻoholo i ka helu o nā mea i loko o kahi ʻano. Hoʻohui pū ʻia ka faila poʻomanaʻo stdcountof.h, e wehewehe ana i kahi ʻano o ka macro "countof" i hoʻokō ʻia ma o "_Countof".
  • Nā mana i wehewehe ʻia ma ka maʻamau C23 C:
    • Ua ʻae ʻia e wehewehe hou i nā ʻano hōʻailona (struct, union, enum) i loko o ka ʻāpana unuhi like inā ʻano like nā wehewehe ʻana (ka helu like o nā lālā, nā ʻano like a me nā inoa inoa).
    • Hoʻohana maʻalahi i nā papa inoa variadic. ʻAe ʻia e hoʻohana i hoʻokahi ʻāpana variadic ma kahi inoa ʻano.
    • Hoʻohui ʻia i ka "__builtin_c23_va_start()" i hoʻohui ʻia i ka GCC no ka hoʻomaikaʻi ʻana i ka hana diagnostic no ka macro va_start() ma ke ʻano C23.
  • I ka MSVC compiler compatibility mode, ua ʻae ʻia ka mea kikoʻī inline i ka wā e haʻi ana i kahi ʻano hana ma o typedef, no ka laʻana, "typedef int inline Foo(int);"
  • Ua ʻae ʻia ka "palena" kūpono no nā ʻano hui me nā mea kuhikuhi.
  • Nā ʻōlelo aʻo a ka mea hoʻopili hou:
    • "-Wdefault-const-init-var" a me "-Wdefault-const-init-field" - e hoʻomaopopo i nā ʻano like ʻole i kaha ʻia a me nā māla i wehewehe ʻia me ka ʻole o ka hoʻomaka ʻana.
    • "-Wimplicit-void-ptr-cast" - hoʻopuka inā loaʻa kahi hoʻololi implicit mai ke ʻano "void*" i kekahi ʻano kuhikuhi.
    • "-Wc++-hua'ōlelo" - hoʻopuka i ka wā e hoʻohana ai i nā huaʻōlelo "C++" ma ke ʻano he ʻike ma "C".
    • "-Wc++-hidden-decl" - ʻike i ka hoʻohana ʻana i nā ʻano hōʻailona i ʻike ʻia ma "C" akā ʻaʻole ʻike ʻia ma "C++" ma muli o nā palena palena.
    • "-Wimplicit-int-enum-cast" - ʻike i nā hoʻololi implicit ma ka code C mai nā ʻano integer a i nā ʻano helu helu i kūpono ʻole me "C++".
    • "-Wtentative-definition-compat" - diagnostic no ka wehewehe ʻana ma C me nā wehewehe he nui ʻaʻole i kūpono me C++.
    • "-Wunterminated-string-initialization" a me "-Wc++-unterminated-string-initialization" — ʻike i nā kūlana o ka hoʻomaka ʻana mai kahi string literal kahi i hiki ʻole ke mālama ʻia ka mea hoʻokaʻawale me ke code null. Ua hoʻohui ʻia ke ʻano "nonstring" e hōʻailona i nā māla a me nā ʻano hoʻololi i ka code C ʻaʻole koi i kahi ʻano null hope.
    • "-Wjump-misses-init" - nā diagnostics o ka lele ʻana ma o ka goto a i ʻole ka hoʻololi ʻana/kahi e lele ai i ka hoʻomaka ʻana o kahi loli kūloko.
    • "-Wundef-true" - Hoʻomaopopo e pili ana i ka hoʻohana ʻana i ka waiwai "ʻoiaʻiʻo" i ka C preprocessor me ka ʻole o ka wehewehe ʻana.
    • "-Wnrvo" - nā diagnostics o ka NRVO i hala (Named Return Value Optimization).
  • Nā hae hōʻuluʻulu hou:
    • "-fprofile-continuous" - hiki iā ia ke hoʻonohonoho mau i ka ʻaoʻao i ka faila.
    • "-ftime-report-json" - ka ʻike manawa hōʻuluʻulu hoʻopuka ma ke ʻano JSON.
    • "-ignore-pch" - hoʻopau i nā poʻomanaʻo i hoʻopili ʻia.
    • "-fthinlto-distributor" a me "-Xthinlto-distributor" - no ka hoʻohana ʻana i ka DTLTO (Integrated Distributed ThinLTO).
    • "-static-libclosure" - no ka hoʻopili static ʻana i ka hoʻonui manawa hana Blocks ma ka paepae Windows.
  • Hoʻonui i nā mea hana diagnostic a me static analysis, hoʻohui i nā loiloi hou (ʻoi aku ma mua o hoʻokahi haneli mau hoʻomaikaʻi pili diagnostic).
  • Hoʻomaikaʻi ʻia nā hope hope no ARM, Aarch64, AMDGPU, x86, RISC-V, LoongArch, MIPS, a me PowerPC hoʻolālā. Ua hoʻohui ʻia ke kākoʻo hoʻāʻo hoʻāʻo no Qualcomm uC, Andes, a me SiFive hoʻonui i ka backend RISC-V.

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