12.1 幎éã®éçºãçµãŠãæ°ãã GCC 12.x ãã©ã³ãã®æåã®éèŠãªãªãªãŒã¹ã§ãããç¡æã®ã³ã³ãã€ã© ã¹ã€ãŒã GCC 12.0 ããªãªãŒã¹ãããŸãããæ°ãããªãªãŒã¹çªå·ä»ãã¹ããŒã ã«åŸã£ãŠãããŒãžã§ã³ 12.1 ãéçºããã»ã¹ã§äœ¿çšãããGCC 13.0 ã®ãªãªãŒã¹ã®çŽåã«ãGCC 13.1 ãã©ã³ãããã§ã«åå²ããŠããŸãããããã«åºã¥ããŠã次ã®ã¡ãžã£ãŒ ãªãªãŒã¹ã§ãã GCC 23 ãäœæãããŸãã圢æãããã 35 æ XNUMX æ¥ããã®ãããžã§ã¯ã㯠GCC ã®åçã®èšç«ãã XNUMX åšå¹Žãç¥ããŸãã
äž»ãªå€æŽç¹ïŒ
- CTF (Compact Type Format) ãããã°åœ¢åŒã®ãµããŒããè¿œå ãããŸãããããã¯ãC åãé¢æ°éã®æ¥ç¶ãããã³ãããã° ã·ã³ãã«ã«é¢ããæ å ±ãã³ã³ãã¯ãã«ä¿åããŸãã ELF ãªããžã§ã¯ãã«åã蟌ãŸããå Žåããã®åœ¢åŒã«ãã EFL æåããŒãã«ã䜿çšããŠããŒã¿ã®éè€ãåé¿ã§ããŸãã
- 1980 幎代ã«äœæããããSTABSããããã°æ å ±ä¿å圢åŒã®ãµããŒãã¯å»æ¢ãããŸããã
- C ããã³ C++ èšèªã®å°æ¥ã® C2X ããã³ C++23 æšæºã®ãµããŒããæ¡åŒµããäœæ¥ãç¶ããããŠããŸããããšãã°ããif constevalãåŒã®ãµããŒããè¿œå ãããŸãããé¢æ°ã®åŒæ°ã§ auto ã䜿çšã§ããŸã (âf(auto(g()))â)ã constexpr ãšããŠå®£èšãããé¢æ°ã§ã¯ãéãªãã©ã«å€æ°ãgoto ããã³ã©ãã«ã®äœ¿çšãèš±å¯ãããŸããå€æ¬¡å ã€ã³ããã¯ã¹æŒç®åoperator[]ã®ãµããŒããè¿œå ããŸããã ifãforãswitch ã§ã¯ãåæåãããã¯ã®æ©èœãæ¡åŒµãããŸãã (ãfor (using T = int; T e : v)ã)ã
- C++ æšæºã©ã€ãã©ãªã§ã¯ãC++20 ããã³ C++23 æšæºã®å®éšã»ã¯ã·ã§ã³ã®ãµããŒãã匷åãããŸããã std::move_only_functionããstd::basic_string::resize_and_overwriteãããããã³ std::invoke_r ã®ãµããŒããè¿œå ãããŸããã constexpr é¢æ°ã§ std::unique_ptrãstd::vectorãstd::basic_stringãstd::optionalãstd::variant ã䜿çšã§ããããã«ãªããŸããã
- Fortran ããã³ããšã³ãã¯ãFortran ãš C ã³ãŒãéã®ç§»æ€æ§ã確ä¿ããããã®æ©èœã説æãã TS 29113 ä»æ§ãå®å šã«ãµããŒãããŠããŸãã
- 以åã« Clang ã«è¿œå ããã __builtin_shufflevector(vec1, vec2, Index1, Index2, ...) æ¡åŒµæ©èœã®ãµããŒããè¿œå ãããŸãããããã«ãããäžè¬çãªãã¯ãã« ã·ã£ããã«ããã³ã·ã£ããã«æäœã XNUMX åã®åŒã³åºãã§å®è¡ã§ããŸãã
- ã-O2ãæé©åã¬ãã«ã䜿çšããå Žåããã¯ãã«åã¯ããã©ã«ãã§æå¹ã«ãªããŸã (-ftree-vectorize ããã³ -fvect-cost-model=very-cheap ã¢ãŒããæå¹ã«ãªããŸã)ãéåžžã«å®äŸ¡ãªã¢ãã«ã¯ããã¯ãã«åãããã¹ã«ã©ãŒ ã³ãŒãããã¯ãã« ã³ãŒãã§å®å šã«çœ®ãæããããšãã§ããå Žåã«ã®ã¿ãã¯ãã«åãèš±å¯ããŸãã
- ã-ftrivial-auto-var-initãã¢ãŒããè¿œå ããŠãã¹ã¿ãã¯äžã®å€æ°ã®æ瀺çãªåæåãæå¹ã«ããŠãåé¡ã远跡ããåæåãããŠããªãå€æ°ã®äœ¿çšã«é¢é£ããè匱æ§ããããã¯ããŸããã
- C ããã³ C++ èšèªã®å Žåããªããžã§ã¯ãã®ãµã€ãºã決å®ããããã®çµã¿èŸŒã¿é¢æ° __builtin_dynamic_object_size ãè¿œå ãããŠãããClang ã®åæ§ã®é¢æ°ãšäºææ§ããããŸãã
- C ããã³ C++ èšèªã®å Žåããunavailableãå±æ§ã®ãµããŒããè¿œå ãããŸãã (ããšãã°ã䜿çšããããšãããšãšã©ãŒãçºçããé¢æ°ãããŒã¯ã§ããŸã)ã
- C ããã³ C++ èšèªã®å ŽåãååŠçãã£ã¬ã¯ãã£ãã#elifdefãããã³ã#elifndefãã®ãµããŒããè¿œå ãããŸããã
- UTF-8 æåã誀ã£ãŠäœ¿çšãããå Žåã«èŠåã衚瀺ããã-Wbidi-charsããã©ã°ãè¿œå ããåââæ¹åããã¹ãã®è¡šç€ºé åºãå€æŽããŸããã
- é åãåç §ãã 2 ã€ã®ãªãã©ã³ããæ¯èŒããããšãããšãã«èŠåã衚瀺ããã-Warray-compareããã©ã°ãè¿œå ããŸããã
- OpenMP 5.0 ããã³ 5.1 (Open Multi-Processing) æšæºã®å®è£ ãå ±æã¡ã¢ãªããã³ãã¯ãã«åãŠããã (SIMD) ãåãããã«ãã³ã¢ããã³ãã€ããªãã (CPU+GPU/DSP) ã·ã¹ãã ã«äžŠåããã°ã©ãã³ã°ææ³ãé©çšããããã® API ãšææ³ãå®çŸ©ããŸãã ããšç¶ããŠããŸãã
- OpenACC 2.6 䞊åããã°ã©ãã³ã°ä»æ§ã®å®è£ ãæ¹åãããGPU ã NVIDIA PTX ãªã©ã®ç¹æ®ãªããã»ããµã§æäœããªãããŒãããããã®ããŒã«ãå®çŸ©ãããŠããŸãã
- æ¡åŒµåœä»€ Intel AVX86-FP512 ããã³ _Float16 ã¿ã€ãã®ãµããŒãããx16 ã¢ãŒããã¯ãã£ã®ã³ãŒãçæããã¯ãšã³ãã«è¿œå ãããŸããã
- x86 ã¢ãŒããã¯ãã£ã®å Žåãç¡æ¡ä»¶åæ¹ãžã£ã³ãæäœåŸã®åœä»€ã®ææ©çå®è¡ã«ãã£ãŠåŒãèµ·ããããããã»ããµã®è匱æ§ã«å¯Ÿããä¿è·ãè¿œå ãããŸããããã®åé¡ã¯ãã¡ã¢ãªå ã®åå²åœä»€ã®çŽåŸã®åœä»€ã®ããªãšã³ããã£ãåŠç (SLSãçŽç·ææ©) ãåå ã§çºçããŸããä¿è·ãæå¹ã«ããããã«ãã-mharden-slsããªãã·ã§ã³ãææ¡ãããŠããŸãã
- åæåãããŠããªãå€æ°ã®äœ¿çšã®æ€åºãå®éšçšéçã¢ãã©ã€ã¶ãŒã«è¿œå ããŸãããã€ã³ã©ã€ã³æ¿å ¥ã§ã¢ã»ã³ã㪠ã³ãŒããåæããããã®åæãµããŒããè¿œå ãããŸãããã¡ã¢ãªè¿œè·¡ãæ¹åãããŸããã switch åŒãåŠçããã³ãŒããæžãçŽãããŸããã
- ã³ãŒã ãžã§ãã¬ãŒã¿ãŒãä»ã®ããã»ã¹ã«åã蟌ã¿ãããã䜿çšããŠãã€ãã³ãŒãããã·ã³ ã³ãŒãã« JIT ã³ã³ãã€ã«ããããã®å ±æã©ã€ãã©ãªã§ãã libgccjit ã« 30 ã®æ°ããåŒã³åºããè¿œå ãããŸããã
- BPF ãã€ãã³ãŒããçæããããã®ããã¯ãšã³ãã« CO-RE (Compile Once - Run Everywhere) ã¡ã«ããºã ã®ãµããŒããè¿œå ãããŸãããããã«ãããLinux ã«ãŒãã«çšã® eBPF ããã°ã©ã ã®ã³ãŒãã 1 åã ãã³ã³ãã€ã«ããããŒããããããã°ã©ã ãçŸåšã®ã«ãŒãã«ãââãã³ BPF ã¿ã€ã圢åŒã«å€æããŸã)ã CO-RE ã¯ãããŒã¿æ§é å ã®èŠçŽ ã®äœçœ®ãããŒãžã§ã³ããšã«å€ãããããã³ã³ãã€ã«ããã eBPF ããã°ã©ã ã®ç§»æ€æ§ã®åé¡ã解決ããŸãã以åã¯ãã³ã³ãã€ã«ãããã«ãŒãã«ã®ããŒãžã§ã³ã§ãã䜿çšã§ããŸããã§ããã
- RISC-V ããã¯ãšã³ãã§ã¯ãæ°ããåœä»€ã»ãã ã¢ãŒããã¯ãã£æ¡åŒµæ©èœ zbaãzbbãzbcãzbs ãšããã¯ãã«ããã³ã¹ã«ã©ãŒæå·åæäœçšã® ISA æ¡åŒµæ©èœã®ãµããŒããè¿œå ãããŠããŸããããã©ã«ãã§ã¯ãRISC-V ISA 20191213 ä»æ§ã®ãµããŒããæäŸãããŠãããT-HEAD c906 ã³ã¢ã®æé©åãæå¹ã«ãã -mtune=thead-c906 ãã©ã°ãè¿œå ãããŸããã
- __int128_t/integer(kind=16) åã®ãµããŒãããGCN ãã€ã¯ãã¢ãŒããã¯ãã£ã«åºã¥ãã AMD GPU ã®ã³ãŒãçæããã¯ãšã³ãã«è¿œå ãããŸãããã³ã³ãã¥ãŒãã£ã³ã° ãŠããã (CU) ããšã«æ倧 40 ã®ã¯ãŒã¯ ã°ã«ãŒããšãã°ã«ãŒãããšã«æ倧 16 ã®åœä»€ããã³ã (ãŠã§ãŒãããã³ããSIMD ãšã³ãžã³ã«ãã£ãŠäžŠåå®è¡ãããã¹ã¬ããã®ã»ãã) ã䜿çšããããšãã§ããŸãã以åã¯ãCU ããšã« XNUMX ã€ã®åœä»€ãšããžã®ã¿ãèš±å¯ãããŠããŸããã
- NVPTX ããã¯ãšã³ãã¯ãNVIDIA PTX (Parallel Thread Execution) åœä»€ã»ãã ã¢ãŒããã¯ãã£ã䜿çšããŠã³ãŒããçæããããã«èšèšãããŠãããã-marchããã-mptxããããã³ã-march-mapããã©ã°ã䜿çšããæ©èœãè¿œå ãããŸããã PTX ISA sm_53ãsm_70ãsm_75ãããã³ sm_80 ã®ãµããŒããå®è£ ããŸãããããã©ã«ãã®ã¢ãŒããã¯ãã£ã¯ sm_30 ã§ãã
- PowerPC / PowerPC64 / RS6000 ããã»ããµã®ããã¯ãšã³ãã§ã¯ãçµã¿èŸŒã¿é¢æ°ã®å®è£ ãæžãçŽãããŸãããçµã¿èŸŒã¿é¢æ° __builtin_get_texasrã__builtin_get_texasruã__builtin_get_tfharã__builtin_get_tfiarã__builtin_set_texasrã__builtin_set_texasruã__builtin_set_tfharã__builtin_set_tfiar ãææžåãããŠããŸãã
- Arm Ampere-64 (-mcpu/-mtune ampere1)ãArm Cortex-A1 (cortex-a510)ãArm Cortex-A510 (cortex-a710)ãããã³ Arm Cortex-X710 (cortex-x2) ã®ãµããŒãã ã-marchããªãã·ã§ã³ãšãšãã«äœ¿çšããæ°ãã ARMv2 ã¢ãŒããã¯ã㣠ãªãã·ã§ã³ã®ãµããŒããè¿œå ãããŸãã: armv8-aãarmv8.7-aãarmv8.8-aãæ¡åŒµ ARM åœä»€ (ls9) ã®äœ¿çšã«åºã¥ããŠãããŒã¿ãã¡ã¢ãªã«ã¢ãããã¯ã«ããŒãããã³ä¿åããããã«ã³ã³ãã€ã© (Intrinsics) ã«çµã¿èŸŒãŸãã C é¢æ°ã®å®è£ ãè¿œå ããŸããã mopsoption ARM æ¡åŒµæ©èœã䜿çšã㊠memcpyãmemmoveãããã³ memset é¢æ°ãé«éåããããã®ãµããŒããè¿œå ãããŸããã
- æ°ãããã§ã㯠ã¢ãŒãã-fsanitize=shadow-call-stackãïŒShadowCallStackïŒãè¿œå ãããŸãããããã¯çŸåš AArch64 ã¢ãŒããã¯ãã£ã§ã®ã¿å©çšå¯èœã§ãã-ffixed-r18ããªãã·ã§ã³ã䜿çšããŠã³ãŒãããã«ããããšãã«æ©èœããŸãããã®ã¢ãŒãã¯ãã¹ã¿ãã¯äžã§ãããã¡ ãªãŒããŒãããŒãçºçããå Žåã«ãé¢æ°ããã®æ»ãã¢ãã¬ã¹ãäžæžãããããšã«å¯Ÿããä¿è·ãæäŸããŸããä¿è·ã®æ¬è³ªã¯ãé¢æ°ã«å¶åŸ¡ã移ããåŸãé¢æ°ãçµäºããåã«æ»ãã¢ãã¬ã¹ãå¥ã®ãã·ã£ããŠãã¹ã¿ãã¯ã«ä¿åãããã®ã¢ãã¬ã¹ãååŸããããšã§ãã
åºæïŒ ãªãŒãã³ããã.ru