16.0 ãæã®éçºåŸãLLVM XNUMX ãããžã§ã¯ãã®ãªãªãŒã¹ãçºè¡šãããŸãããããã¯ãããã°ã©ã ã RISC ã®ãããªä»®æ³åœä»€ã®äžéãããã³ãŒãã«ã³ã³ãã€ã«ãã GCC äºæããŒã«ããã (ã³ã³ãã€ã©ããªããã£ãã€ã¶ãããã³ã³ãŒã ãžã§ãã¬ãŒã¿) ã§ã (ãã«ãã¬ãã«æé©åã·ã¹ãã )ã çæãããæ¬äŒŒã³ãŒãã¯ãããã°ã©ã å®è¡æã« JIT ã³ã³ãã€ã©ãŒã䜿çšããŠçŽæ¥æ©æ¢°èªåœä»€ã«å€æã§ããŸãã
Clang 16.0 ã®äž»ãªæ¹åç¹:
- ããã©ã«ãã® C++/ObjC++ æšæºã¯ gnu++17 (以åã® gnu++14) ã§ããããã¯ãGNU æ¡åŒµæ©èœãåãã C++17 æ©èœãããã©ã«ãã§ãµããŒããããŠããããšãæå³ããŸãã 以åã®åäœã«æ»ãã«ã¯ãã-std=gnu++14ããªãã·ã§ã³ã䜿çšã§ããŸãã
- C++20 æšæºã«é¢é£ããé«åºŠãªæ©èœãå®è£
ãããŸããã
- æ¡ä»¶ä»ãã§èªæãªç¹å¥ãªã¡ã³ããŒé¢æ°ã
- ã©ã ãé¢æ°ã§æ§é åãã€ã³ãã£ã³ã°ããã£ããã£ããã
- åŒå ã®ç䟡æŒç®åã
- äžéšã®ã³ã³ããã¹ã㧠typename ããŒã¯ãŒããçç¥ãããªãã·ã§ã³ã
- æ¬åŒ§å ã®æå¹ãªéèšåæå (ãAggr(val1, val2)ã)ã
- å°æ¥ã® C++2b æšæºã§å®çŸ©ãããæ©èœãå®è£
ãããŸããã
- è€ååŒã®æ«å°Ÿã«ã©ãã«ãé 眮ããããšãã§ããŸãã
- éçæŒç®å()ã
- éçæŒç®å[]ã
- char8_tåãšã®äºææ§ã確ä¿ãããŠããã
- ã\N{...}ãã§äœ¿çšã§ããæåã®ç¯å²ãæ¡åŒµãããŸãã
- constexpr ãšããŠå®£èšãããé¢æ°ã§ããstatic constexprããšããŠå®£èšãããå€æ°ã䜿çšããæ©èœãè¿œå ãããŸããã
- å°æ¥ã® C æšæº C2x ã§å®çŸ©ãããæ©èœãå®è£
ãããŸããã
- ã-Wunused-labelãèŠåãç¡å¹ã«ããã«ã¯ãã[[maybe_unused]]ãå±æ§ãã©ãã«ã«é©çšã§ããŸãã
- è€ååŒå ã®ã©ãã«ã§ãã©ãã«ãé 眮ã§ããŸãã
- typeof æŒç®åãš typeof_unqual æŒç®åãè¿œå ããŸããã
- æ°ããå nullptr_t ãš nullptr å®æ°ã¯ãä»»æã®ãã€ã³ã¿ãŒåã«å€æã§ããæŽæ°åãš void* åã«ãã€ã³ããããŠããªã NULL ã®ããªã¢ã³ããè¡šã null ãã€ã³ã¿ãŒãå®çŸ©ããŸãã
- C2x ã¢ãŒãã§ã¯ãå¯å€æ°ã®åŒæ° (å¯å€é·åŒæ°) ã䜿çšã㊠va_start ãã¯ããåŒã³åºãããšãã§ããŸãã
- C99ãC11ãããã³ C17 æºæ ã¢ãŒãã§ã¯ãããã©ã«ã ãªãã·ã§ã³ã-Wimplicit-function-declarationãããã³ã-Wimplicit-intãã«ãããèŠåã§ã¯ãªããšã©ãŒãçæãããããã«ãªããŸããã
- C++ ã¢ãŒãã§ã® "void *" (äŸ: "void func(void *p) { *p; }") ã®éæ¥çãªäœ¿çšã¯ãISO C++ãGCCãICCãMSVC ãšåæ§ã®ãšã©ãŒãçæããããã«ãªããŸããã
- Microsoft ã¹ã¿ã€ã«ã®ã€ã³ã©ã€ã³ ã¢ã»ã³ã㪠ãããã¯ã§ããããã£ãŒã«ããåœä»€ãªãã©ã³ã (äŸ: "__asm { mov eax, s.bf }") ãšããŠæå®ãããšããšã©ãŒãçæãããããã«ãªããŸããã
- ç°ãªãã¢ãžã¥ãŒã«å ã«åãååãæã€ç°ãªãæ§é äœãšå ±çšäœãååšãããã©ããã®èšºæãè¿œå ããŸããã
- OpenCL ããã³ OpenMP ã®ãµããŒãã«é¢é£ããæ©èœãæ¡åŒµãããŸããã OpenCL ã«ãŒãã«åŒæ°ã§äœ¿çšããã C++ ãã³ãã¬ãŒãã®èšºæãæ¹åãããŸããã AMDGPU ã®ãã¥ãŒ ãããã¯ã®ãµããŒããæ¹åãããŸããã nounwind å±æ§ã¯ãã¹ãŠã®é¢æ°ã«æé»çã«è¿œå ãããŸãã çµã¿èŸŒã¿é¢æ°ã®ãµããŒããæ¹åãããŸããã
- CLANG_CRASH_DIAGNOSTICS_DIR ç°å¢å€æ°ã䜿çšããŠãã¯ã©ãã·ã¥èšºæããŒã¿ãä¿åããããã£ã¬ã¯ããªãå®çŸ©ããæ©èœãè¿œå ãããŸããã
- Unicode ãµããŒãã Unicode 15.0 ä»æ§ã«æŽæ°ãããŸããã ãâãïŒäŸïŒãdouble xâââãïŒãªã©ãäžéšã®æ°åŠèšå·ã¯èå¥åã§äœ¿çšã§ããŸãã
- è€æ°ã®æ§æãã¡ã€ã«ã®ããŒãã®ãµããŒããè¿œå ãããŸãã (ããã©ã«ãã®æ§æãã¡ã€ã«ãæåã«ããŒãããã次ã«ã--config=ããã©ã°ã§æå®ããããã¡ã€ã«ãããŒããããè€æ°åæå®ã§ããããã«ãªããŸãã)ã èšå®ãã¡ã€ã«ã®ããã©ã«ãã®ããŒãé åºãå€æŽããŸãããclang ã¯æåã«ãã¡ã€ã«ãããŒãããããšããŸãã - .cfg ãèŠã€ãããªãå Žå㯠XNUMX ã€ã®ãã¡ã€ã«ãããŒãããããšããŸãã .cfg ãš.cfgã ããã©ã«ãã§èšå®ãã¡ã€ã«ã®ããŒããç¡å¹ã«ããããã«ãã--no-default-configããã©ã°ãè¿œå ãããŸããã
- å埩å¯èœãªãã«ããä¿èšŒããããã«ã__DATE__ã__TIME__ã__TIMESTAMP__ ãã¯ãã®çŸåšã®æ¥ä»ãšæå»ã®å€ããSOURCE_DATE_EPOCH ç°å¢å€æ°ã§æå®ãããæå»ã«çœ®ãæããããšãã§ããŸãã
- å®æ°ã®ã³ã³ããã¹ãã§äœ¿çšã§ããçµã¿èŸŒã¿é¢æ° (builtin) ã®ååšã確èªããããã«ããã¯ãã__has_constexpr_builtinããè¿œå ãããŸããã
- ã¢ã©ã€ã³ã¡ã³ããããã³ã«ãŒãã³ãã¬ãŒã å²ãåœãŠã®ããã®æ°ããã³ã³ãã€ã«ãã©ã°ã-fcoro-aligned-allocationããè¿œå ããŸããã
- ã-fstrict-flex-arrays=ããã©ã°ã¯ãæ§é å ã®ãã¬ãã·ãã«é åèŠçŽ (ãã¬ãã·ãã«é åã¡ã³ããŒãæ§é ã®æåŸã«ããç¡éãµã€ãºã®é å) ã®æ€èšŒã®ç¬¬ 0 ã¬ãã«ã®ãµããŒããå®è£ ããŸãã 0 çªç®ã®ã¬ãã«ã§ã¯ããµã€ãºã[]ã (ããšãã°ããint b[]ã) ã®ã¿ãæè»ãªé åãšããŠæ±ãããŸããããµã€ãºã[XNUMX]ã (ããšãã°ããint b[XNUMX]ã) ã¯æè»ãªé åãšããŠæ±ãããŸããã§ã¯ãããŸããã
- æšæº C++ ã¢ãžã¥ãŒã«ã®åçžã³ã³ãã€ã« ã¢ãã«ãæå¹ã«ããããã®ã-fmodule-outputããã©ã°ãè¿œå ããŸããã
- ã¹ã¿ã㯠ãã¬ãŒã ã¬ã€ã¢ãŠãã®åé¡ã®èšºæã«åœ¹ç«ã€ã-Rpass-analysis=stack-frame-layoutãã¢ãŒããè¿œå ãããŸããã
- æ°ããå±æ§ __attribute__((target_version("cpu_features"))) ãè¿œå ããAArch1 ã«ãã£ãŠæäŸãããæ©èœã®ç¹å®ã®ããŒãžã§ã³ãéžæããããã«å±æ§ __attribute__((target_clones("cpu_features2","cpu_features64",...))) ã®æ©èœãæ¡åŒµããŸããã CPUã
- æ¡åŒµããã蚺æããŒã«:
- ã·ã³ã°ã«ãããã®ç¬Šå·ä»ãããããã£ãŒã«ãã«ä»£å ¥ããéã®æé»çãªåãæšãŠãæ€åºããèŠåã-Wsingle-bit-bitfield-constant-conversionããè¿œå ããŸããã
- åæåãããŠããªã constexpr å€æ°ã®èšºæãæ¡åŒµãããŸããã
- é¢æ°åãã£ã¹ãã«é¢ããæœåšçãªåé¡ãç¹å®ããããã«ãã-Wcast-function-type-strictãããã³ã-Wincompatibility-function-pointer-types-strictãèŠåãè¿œå ããŸããã
- ãšã¯ã¹ããŒã ãããã¯ã§ééã£ãã¢ãžã¥ãŒã«åãŸãã¯äºçŽãããã¢ãžã¥ãŒã«åã䜿çšããããã®èšºæãè¿œå ããŸããã
- å®çŸ©å ã«æ¬ èœããŠãããautoãããŒã¯ãŒãã®æ€åºãæ¹åãããŸããã
- ã-Winteger-overflowãèŠåã®å®è£ ã«ããããªãŒããŒãããŒãåŒãèµ·ããè¿œå ã®ç¶æ³ã«å¯Ÿãããã§ãã¯ãè¿œå ãããŸããã
- LoongArch åœä»€ã»ãã ã¢ãŒããã¯ã㣠(-march=loongarch64 ãŸã㯠-march=la464) ã®ãµããŒããå®è£ ãããŸããããã㯠Loongson 3 5000 ããã»ããµã§äœ¿çšãããMIPS ã RISC-V ãšåæ§ã®æ°ãã RISC ISA ãå®è£ ããŸãã
LLVM 16.0 ã®äž»ãªé©æ°:
- LLVM ã³ãŒãã§ã¯ãC++17 æšæºã§å®çŸ©ãããèŠçŽ ã䜿çšã§ããŸãã
- LLVM ãæ§ç¯ããããã®ç°å¢èŠä»¶ãå¢å ããŸããã ãã«ã ããŒã«ã¯ C++17 æšæºããµããŒãããå¿ èŠããããŸããã€ãŸãã ãã«ãããã«ã¯ãå°ãªããšã GCC 7.1ãClang 5.0ãApple Clang 10.0ããŸã㯠Visual Studio 2019 16.7 ãå¿ èŠã§ãã
- AArch64 ã¢ãŒããã¯ãã£ã®ããã¯ãšã³ãã§ã¯ãCortex-A715ãCortex-X3ãNeoverse V2 CPUãRME MEC (ã¡ã¢ãªæå·åã³ã³ããã¹ã) ã®ã¢ã»ã³ãã©ãArmv8.3 æ¡åŒµæ©èœ (è€çŽ æ°)ãããã³é¢æ°ãã«ã ããŒãžã§ãã³ã°ã®ãµããŒããè¿œå ãããŠããŸãã
- ARM ã¢ãŒããã¯ãã£ã®ããã¯ãšã³ãã§ã¯ãæ£ããã³ãŒãã®çæãä¿èšŒãããŠããªã Armv2ãArmv2AãArmv3ãããã³ Armv3M ã¿ãŒã²ãã ãã©ãããã©ãŒã ã®ãµããŒããäžæ¢ãããŸããã è€çŽ æ°ãæ±ãããã®åœä»€ã®ã³ãŒããçæããæ©èœãè¿œå ãããŸããã
- X86 ã¢ãŒããã¯ãã£ã®ããã¯ãšã³ãã«ã¯ãåœä»€ã»ãã ã¢ãŒããã¯ã㣠(ISA) AMX-FP16ãCMPCCXADDãAVX-IFMAãAVX-VNNI-INT8ãAVX-NE-CONVERT ã®ãµããŒããè¿œå ãããŸããã RDMSRLISTãRMSRLISTãããã³ WRMSRNS åœä»€ã®ãµããŒããè¿œå ãããŸããã ãªãã·ã§ã³ã-mcpu=raptorlakeããã-mcpu=meteorlakeããã-mcpu=emeraldrapidsããã-mcpu=sierraforestããã-mcpu=graniterapidsãããã³ã-mcpu=grandridgeããå®è£ ããŸããã
- LoongArch ãã©ãããã©ãŒã ã®å ¬åŒãµããŒããè¿œå ãããŸããã
- MIPSãPowerPCãRISC-V ã¢ãŒããã¯ãã£åãã®ããã¯ãšã³ãã®æ¹å
- LoongArch ã¢ãŒããã¯ãã£ã® 64 ãããå®è¡å¯èœãã¡ã€ã«ã®ãããã°ã®ãµããŒãã LLDB ãããã¬ãŒã«è¿œå ãããŸããã COFF ãããã° ã·ã³ãã«ã®åŠçãæ¹åãããŸããã ããŒãããã Windows ã¢ãžã¥ãŒã«ã®ãªã¹ãå ã®éè€ãã DLL ã®ãã£ã«ã¿ãªã³ã°ãæäŸãããŸããã
- Libc++ ã©ã€ãã©ãªã§ã¯ãäž»ãªäœæ¥ã¯ C++20 ããã³ C++23 æšæºã®æ°æ©èœã®ãµããŒãã®å®è£ ã«éç¹ã眮ãããŠããŸããã
- LDD ãªã³ã«ãŒã¯ãã¢ãã¬ã¹åé 眮ã¹ãã£ã³ãšã»ã¯ã·ã§ã³åæåæäœã䞊ååããããšã«ããããªã³ã¯æéãå€§å¹ ã«ççž®ããŸãã ZSTD ã¢ã«ãŽãªãºã ã䜿çšããã»ã¯ã·ã§ã³å§çž®ã®ãµããŒããè¿œå ãããŸããã
åºæïŒ ãªãŒãã³ããã.ru