XNUMX幎éã®éçºãçµãŠ
GCC 10.1 ã¯ãC++20 æšæºåãã«éçºããã C++ èšèªã«ãããå€ãã®é©æ°çãªå®è£
ãå°æ¥ã® C èšèªæšæº (C2x) ã«é¢é£ããæ¹åãã³ã³ãã€ã© ããã¯ãšã³ãã®æ°ããæé©åãããã³å®éšçãµããŒãã§æ³šç®ã«å€ããŸãã
ã¡ã€ã³
-
è¿œå ãã éç解æã®å®éšã¢ãŒãã-ãã¡ãã©ã€ã¶ãŒ ããã¯ãããã°ã©ã å ã®ã³ãŒãå®è¡ãã¹ãšããŒã¿ ãããŒã®ãªãœãŒã¹ã倧éã«æ¶è²»ããããã·ãŒãžã£éåæãå®è¡ããŸãã ãã®ã¢ãŒãã¯ãXNUMX ã€ã®ã¡ã¢ãªé åã«å¯Ÿãã free() é¢æ°ã®äºéåŒã³åºãããã¡ã€ã«èšè¿°åã®ãªãŒã¯ãéåç §ãš null ãã€ã³ã¿ã®åãæž¡ãã解æŸãããã¡ã¢ãª ãããã¯ãžã®ã¢ã¯ã»ã¹ãåæåãããŠããªãå€ã®äœ¿çšãªã©ã®åé¡ãã³ã³ãã€ã«æ®µéã§æ€åºã§ããŸãã OpenSSL ã³ãŒãã®æ°ããã¢ãŒãã®äœ¿çšã«ããããã§ã«å±éºãªèåŒ±æ§ . - ããã·ãŒãžã£éã®æé©åãæ¹åãããŸããã IPA-SRA (ããã·ãŒãžã£éã¹ã«ã©ãŒå ±æ眮æ) ãã¹ã¯ãã€ã³ãæã«æ©èœããããã«åèšèšãããç¹ã«ãèšç®ãããŠè¿ãããæªäœ¿çšã®å€ãåé€ãããããã«ãªããŸããã ã-O2ãæé©åã¢ãŒãã§ã¯ãã-finline-functionsããªãã·ã§ã³ãæå¹ã«ãªããå®è¡ããã©ãŒãã³ã¹ãããã³ã³ãã¯ããªã³ãŒããåªå ããããã«èª¿æŽãããŸãã ã€ã³ã©ã€ã³é¢æ°å±éã®ããã®ãã¥ãŒãªã¹ãã£ãã¯ã®äœæ¥ãé«éåãããŸããã ã€ã³ã©ã€ã³å±éãšé¢æ°è€è£œãã¥ãŒãªã¹ãã£ãã¯ã§ã¯ãå€ã®ç¯å²ã«é¢ããæ å ±ã䜿çšããŠãåã ã®å€æã®æå¹æ§ãäºæž¬ã§ããããã«ãªããŸããã C++ ã§ã¯ãåããŒã¹ã®ãšã€ãªã¢ã¹è§£æã®ç²ŸåºŠãåäžããŸããã
- 匷åããããªã³ã¯æéã®æé©å (LTO)ã æ°ããå®è¡å¯èœãã¡ã€ã«ãè¿œå ããŸãã
lto-ãã³ã LTO ãã€ãã³ãŒãã䜿çšããŠãªããžã§ã¯ã ãã¡ã€ã«ã«é¢ããæ å ±ããªã»ããããŸãã 䞊å LTO ãã¹ã¯ãåæã«å®è¡ããã make ã¿ã¹ã¯ã®æ°ãèªåçã«æ±ºå®ãã決å®ã§ããªãå Žåã¯ãCPU ã³ã¢ã®æ°ã«é¢ããæ å ±ã䞊ååä¿æ°ãšããŠäœ¿çšããŸãã zstd ã¢ã«ãŽãªãºã ã䜿çšã㊠LTO ãã€ãã³ãŒããå§çž®ããæ©èœãè¿œå ãããŸããã - ã³ãŒããããã¡ã€ãªã³ã°ã®çµæã«åºã¥ãæé©åã¡ã«ããºã (PGO - ãããã¡ã€ã«ã¬ã€ãä»ãæé©å) ãæ¹åãããã³ãŒãå®è¡ã®ç¹æ§ã®åæã«åºã¥ããŠããæé©ãªã³ãŒããçæãããŸãã ã³ã³ãã€ã«ããã³ããã/ã³ãŒã«ãã³ãŒãåé¢æã®ãããã¡ã€ã«ã®ã¡ã³ããã³ã¹ãæ¹åãããŸããã ãªãã·ã§ã³çµç±ã§ã
-fprofile-values » ã¯ãéæ¥åŒã³åºããªã©ãããæ£ç¢ºãªãããã¡ã€ã«æ å ±ãæäŸããããã«ãæ倧 4 ã€ã®ãããã¡ã€ã«å€ãç£èŠã§ããããã«ãªããŸããã - CãC++ãããã³ Fortran èšèªçšã«å®è£
ããã䞊åããã°ã©ãã³ã°ä»æ§
OpenACC 2.6 ãGPU ããã³ NVIDIA PTX ãªã©ã®ç¹æ®ãªããã»ããµãŒã§æäœããªãããŒãããããã®ããŒã«ãå®çŸ©ããŸãã æšæºã®å®è£ ã¯ã»ãŒå®äºMP5.0ãéããŸã (Open Multi-Processing) ã¯ãå ±æã¡ã¢ãªãšãã¯ãã«åãŠããã (SIMD) ãåãããã«ãã³ã¢ããã³ãã€ããªãã (CPU+GPU/DSP) ã·ã¹ãã ã«äžŠåããã°ã©ãã³ã°ææ³ãé©çšãã API ãšææ³ãå®çŸ©ããŸãã lastprivate æ¡ä»¶ãã¹ãã£ã³ããã³ã«ãŒã ãã£ã¬ã¯ãã£ããorder ããã³ use_device_addr åŒãªã©ã®æ©èœãè¿œå ãããŸããã OpenMP ããã³ OpenACC ã«ã€ããŠã¯ã第 10 äžä»£ (ãã£ãžãŒ) ããã³ç¬¬ 20 äžä»£ AMD Radeon (GCN) GPU (VEGA XNUMX/VEGA XNUMX) ã§ã®ãªãããŒãæäœã®ãµããŒããè¿œå ãããŸããã - C ãã¡ããªãŒã®èšèªã®å Žåãåç §ãŸãã¯ãã€ã³ã¿ãŒã«ãã£ãŠæž¡ããããªããžã§ã¯ããžã®é¢æ°ã®ã¢ã¯ã»ã¹ãèšè¿°ãããã®ãããªãªããžã§ã¯ãããªããžã§ã¯ãã®ãµã€ãºã«é¢ããæ å ±ãå«ãæŽæ°ã®åŒæ°ã«é¢é£ä»ãããã¢ã¯ã»ã¹ãé¢æ°ãè¿œå ãããŸããã ãaccessããšé£æºããŠæ©èœããããã«ããtypeãå±æ§ã¯ãé åã®å¢çå€ã®é åã«å€ãæžã蟌ãå Žåãªã©ããŠãŒã¶ãŒé¢æ°ããã®äžæ£ãªã¢ã¯ã»ã¹ãæ€åºããããã«å®è£ ãããŠããŸãã ãŸããELF ãã¡ã€ã«å ã®ã·ã³ãã«ãç¹å®ã®ããŒãžã§ã³çªå·ã«é¢é£ä»ãããsymverãå±æ§ãè¿œå ãããŸããã
- æ°ããèŠåãè¿œå ãããŸãã:
- ã-Wstring-compareãïŒã-Wextraãã§æå¹ïŒ - ãŒãã strcmp ããã³ strncmp é¢æ°ã®åŒã³åºãçµæãšæ¯èŒãããåŒã®ååšã«ã€ããŠèŠåããŸããããã¯ãé·ããç°ãªãããå®æ°ãšåçã§ãã XNUMX ã€ã®åŒæ°ã®ãµã€ãºã XNUMX çªç®ã®åŒæ°ã®é åã®ãµã€ãºãã倧ãããªããŸãã
- ã-Wzero-length-boundsã (ã-Warray-boundsãã§æå¹) - é·ã XNUMX ã®é åèŠçŽ ãžã®ã¢ã¯ã»ã¹ã«ã€ããŠèŠåããŸããããã«ãããä»ã®ããŒã¿ãäžæžããããå¯èœæ§ããããŸãã
- ã-Warray-boundsããã-Wformat-overflowããã-Wrestrictããã-Wreturn-local-addrããããã³ã-Wstringop-overflowãèŠåãæ¡åŒµãããç¯å²å€ã®ç¶æ³ã®æ°ãå¢å ããŸãããæ±ã£ãŠãããã®ã
- UCN è¡šèš (\uNNNN ãŸã㯠\UNNNNNNNN) ã§ã¯ãªããçŸåšã®ãšã³ã³ãŒãã£ã³ã° (ããã©ã«ãã§ã¯ UTF-8) ã䜿çšããŠãèå¥åã«ã¯ã€ãæåãçŽæ¥æå®ããæ©èœãå®è£
ããŸããã äŸãã°ïŒ
éçå®æ° int Ï = 3;
int get_naïve_pi() {
Ïãè¿ããŸãã
} - C èšèªã®å ŽåãC2X æšæºå
ã§éçºãããæ°æ©èœã®äžéšãå®è£
ãããŸãã (-std=c2x ããã³ -std=gnu2x ãæå®ããããšã§æå¹ã«ãªããŸã)ã次ã®ãããªå±æ§ãå®çŸ©ããããã®ã[[]]ãæ§æã®ãµããŒããç»å ŽããŸããã C++ (äŸ: [[gnu ::const]]ã[[deprecated]]ã[[fallthrough]]ãããã³ [[maybe_unused]]ãUTF-8 æåã䜿çšããŠå®æ°ãå®çŸ©ããããã®ãu8ãæ§æã®ãµããŒããè¿œå ãããŸããã
æ°ãããã¯ããè¿œå ããŸããã ã%OBãããã³ã%Obã眮æã strftime ã«è¿œå ããŸããã - C ã®ããã©ã«ã ã¢ãŒãã¯ã-fno-commonãã§ããããã«ãããäžéšã®ãã©ãããã©ãŒã ã§ã°ããŒãã«å€æ°ãžã®ããå¹ççãªã¢ã¯ã»ã¹ãå¯èœã«ãªããŸãã
- C++ ã®å ŽåãC++16 æšæºã§éçºãããçŽ 20 ã®å€æŽãšé©æ°ãå®è£
ãããŸããã è¿œå ãããããŒã¯ãŒããconstinitããå«ã
ãã³ãã¬ãŒãæ¡åŒµæ©èœã®ãµããŒããå®è£ ãããŸããããæŠå¿µ ãã æŠå¿µã䜿çšãããšãã³ã³ãã€ã«æã«ãã³ãã¬ãŒã ãã©ã¡ãŒã¿ãŒãšããŠåãå ¥ããããåŒæ°ã®ã»ãããå¶éããäžé£ã®ãã³ãã¬ãŒã ãã©ã¡ãŒã¿ãŒèŠä»¶ãå®çŸ©ã§ããŸãã ãã®æŠå¿µã䜿çšãããšããã³ãã¬ãŒãå ã§äœ¿çšãããããŒã¿åã®ããããã£ãšå ¥åãã©ã¡ãŒã¿ãŒã®ããŒã¿åããããã£ã®éã®è«ççäžäžèŽãåé¿ã§ããŸãã - G++ ã¯ãconstexpr ãä»ããŠå®æ°ãªããžã§ã¯ãã®å€æŽã«ãã£ãŠåŒãèµ·ããããæªå®çŸ©ã®åäœãæ€åºããŸãã constexpr ãèšç®ããéã®ã³ã³ãã€ã©ã«ããã¡ã¢ãªæ¶è²»éãåæžãããŸããã æ°ããèŠåã-Wmismatched-tagsããšã-Wredundant-tagsããè¿œå ããŸããã
- æ°ããã³ãã³ã ã©ã€ã³ ãªãã·ã§ã³ãææ¡ãããŠããŸãã
- ã-fallocation-dceãã¯ããnewãæŒç®åãšãdeleteãæŒç®åã®äžèŠãªãã¢ãåé€ããŸãã
- ã-fprofile-partial-trainingãã¯ããã¬ãŒãã³ã°ã®å®è¡ããªãã³ãŒãã®ãµã€ãºã®æé©åãç¡å¹ã«ããŸãã
- "-fprofile-reproducible ã¯ããããã¡ã€ã«ã®åçŸæ§ã®ã¬ãã«ãå¶åŸ¡ããŸãã
- ã-fprofile-prefix-pathãã¯ãåå¥ã®ãããã¡ã€ã«çæã«äœ¿çšãããããŒã¹ ãœãŒã¹ ãã«ã ãã£ã¬ã¯ããªãå®çŸ©ããŸã (ã-fprofile-generate=profile_dirãããã³ã-fprofile-use=profile_dirãã®å Žå)ã
- èšåããããªãã·ã§ã³ã®èŠåããã¹ãã«ã¯ããããã®ãªãã·ã§ã³ã®ããã¥ã¡ã³ãã«ç§»åã§ãããã€ããŒãªã³ã¯ãæäŸãããŠããŸãã URL 眮æã¯ãã-fdiagnostics-urlsããªãã·ã§ã³ã䜿çšããŠå¶åŸ¡ãããŸãã
- ããªããã»ããµæŒç®åãè¿œå ããŸããã
__ãçµã¿èŸŒãŸããŠããŸã ãã䜿çšããŠãçµã¿èŸŒã¿é¢æ°ã確èªã§ããŸãã - ISO/IEC TS 18661 ä»æ§ã§å®çŸ©ãããŠããäžžãé¢æ°ã®å®è£ ãåããæ°ããçµã¿èŸŒã¿é¢æ°ã__builtin_roundevenããè¿œå ããŸãããããã¯ãroundãã«äŒŒãŠããŸããã0.5 ãè¶ ããéšåãåãäžã (ãã倧ããªå€ã«)ã0.5 æªæºã®éšåãåæšäºå ¥ããŸãã - (ãŒããŸã§) ããŠã³ãã0.5 ã«çãã - æåŸãã XNUMX çªç®ã®æ¡ã®ããªãã£ããéå§ããŸãã
- AArch64 ã¢ãŒããã¯ãã£ã§ã¯ãSVE2 æ¡åŒµæ©èœã®ãµããŒããè¿œå ãããçµã¿èŸŒã¿ SVE ACLE é¢æ°ãšåã®ãµããŒãã®è¿œå ããã¯ãã«åã®äœ¿çšãªã©ãSVE (Scalable Vector Extension) ã®ãµããŒããæ¹åãããŸããã LSE (Large System Extensions) ããã³ TME (Transactional Memory Extension) ã®ãµããŒããæ¡åŒµãããŸããã Armv8.5-A ããã³ Armv8.6-A ã§ææ¡ãããæ°ããåœä»€ãè¿œå ããŸãããããã«ã¯ãä¹±æ°çæãäžžããã¡ã¢ãª ã¿ã° ãã€ã³ãã£ã³ã°ã
bfloat16 ãšè¡åã®ä¹ç®ã ããã»ããµãµããŒãã®è¿œå
ã¢ãŒã ã³ãŒããã¯ã¹-A77ã
ã¢ãŒã ã³ãŒããã¯ã¹-A76AEã
ã¢ãŒã ã³ãŒããã¯ã¹-A65ã
ã¢ãŒã ã³ãŒããã¯ã¹-A65AEã
Arm Cortex-A34 ãš
ããŒãã«ã®ãµã³ããŒX3ã - ARM32 ã® ABI FDPIC (64 ãããé¢æ°ãã€ã³ã¿ãŒ) ã®ãµããŒããè¿œå ãããŸããã 64 ãããæŽæ°æŒç®ã®åŠçãåèšèšãããæé©åãããŸããã CPUãµããŒãã®è¿œå
ã¢ãŒã ã³ãŒããã¯ã¹-A77ã
Arm Cortex-A76AEãš
ã¢ãŒã ã³ãŒããã¯ã¹-M35Pã 32 ããã SIMDã16 ãããä¹ç®ãã©ããæŒç®ããã®ä»ã® DSP ã¢ã«ãŽãªãºã ã®æé©åãå«ããACLE ããŒã¿åŠçåœä»€ã®ãµããŒããæ¡åŒµãããŸããã ACLE CDE (ã«ã¹ã¿ã ããŒã¿ãã¹æ¡åŒµ) åœä»€ã®å®éšçãµããŒããè¿œå ããŸããã - GCN ãã€ã¯ãã¢ãŒããã¯ãã£ã«åºã¥ããŠãAMD GPU ã®ããã¯ãšã³ãã§ã®ã³ãŒãçæãšãã¯ãã«åãå€§å¹ ã«æ¹åãããŸããã
- AVR ã¢ãŒããã¯ãã£çšã® XMEGA ã®ãããªããã€ã¹ã®ãµããŒããè¿œå ããŸãã
ATtiny202ãATtiny204ãATtiny402ãATtiny404ãATtiny406ãATtiny804ãATtiny806ãATtiny807ãATtiny1604ãATtiny1606ãATtiny1607ãATmega808ãATmega809ãATmega1608ãATmega1609ã ATmega3208ãATmega3209 4808ãATmega4809ãATmegaXNUMXã - æ°ããã€ã³ãã« ENQCMD åœä»€ã»ãã ã¢ãŒããã¯ãã£æ¡åŒµæ©èœ (-menqcmd) ã IA-32/x86-64 ã¢ãŒããã¯ãã£ã«è¿œå ãããŸããã Intel Cooperlake (-march=cooperlakeãAVX512BF16 ISA æ¡åŒµæ©èœãå«ã) ããã³ Tigerlake (-march=tigerlakeãMOVDIRIãMOVDIR64Bãããã³ AVX512VP2INTERSECT ISA æ¡åŒµæ©èœãå«ã) CPU ã®ãµããŒããè¿œå ãããŸããã
- HSA ã¢ãŒããã¯ãã£ã«åºã¥ãç°çš®ã³ã³ãã¥ãŒãã£ã³ã° ã·ã¹ãã çšã® HSAIL (ç°çš®ã·ã¹ãã ã¢ãŒããã¯ãã£äžéèšèª) ã®å®è£ ã¯éæšå¥šãšãªããå°æ¥ã®ãªãªãŒã¹ã§ã¯åé€ãããå¯èœæ§ããããŸãã
åºæïŒ ãªãŒãã³ããã.ru