ááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯ áá áºááŸá áºá¡ááŒá¬ááœááºá á¡ááá²á· GCC 11.1 compiler suite ááᯠáá¯ááºáá±áá²á·ááŒá®ážá GCC 11.x áá¬áááœá²á¡áá áºááœáẠááááá¯á¶áž áááá¬áááºááŸá¬ážáá±á¬ ááŒáá·áºáá»áááŸá¯ááŒá áºáááºá á¡áá áºááœááºááŸááá¬ážáá±á¬ áá¶áá«ááºáááºááŒááºážá¡á á®á¡á ááºá¡á±á¬ááºááœááºá áá¬ážááŸááºáž 11.0 ááᯠááœá¶á·ááŒáá¯ážááá¯ážáááºááŸá¯áá¬áá¡ááœááºáž á¡áá¯á¶ážááŒá¯áá²á·ááŒá®áž GCC 11.1 áááœááºááŸááá® áááŒá¬áá®ááœááºá GCC 12.0 áá¬áááœá²ááᯠááœá²áá¯ááºáá¬ážááŒá®ážááŒá áºááŒá®ážá áá¬ááá·áº GCC 12.1 á áá±á¬ááºáá°ážááŒá¬ážáá»ááºááŒá áºáá±á¬ ááŒáá·áºáá»áááŸá¯ááᯠááœá²á·á ááºážáááºááŒá áºáááºá
GCC 11.1 ááẠáá¯á¶ááŸááºá¡á¬ážááŒáá·áº DWARF 5 á¡ááŸá¬ážááŸá¬ááŒááºááá¯ááºáá±á¬áºáááºááᯠá¡áá¯á¶ážááŒá¯ááŒááºážááá¯á· áá°ážááŒá±á¬ááºážááŒááºážá¡ááœáẠááŸááºáá¬ážááœááºááŒá áºááŒá®ážá C++17 á á¶ááŸá¯ááºáž (â-std=gnu++17â) á áá¯á¶áá±áá«áááºááŸá¯ááŒá áºáá±á¬ C++20 á¡ááœáẠáááá¬áááºááŸá¬ážáá±á¬ááá¯ážáááºááŸá¯áá»á¬áž á á¶áááºááŸááºáá»ááºá C++23 á¡ááœáẠá ááºážáááºáá¶á·ááá¯ážááŸá¯á á¡áá¬ááẠC áá¬áá¬á áá¬ážá á¶ááŸá¯ááºáž (C2x) ááŸáá·áº áááºá ááºáá±á¬ ááá¯ážáááºááŸá¯áá»á¬ážá á áœááºážáá±á¬ááºááẠááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬áẠáá¯ááºáá±á¬ááºááŸá¯áá»á¬ážá
á¡áááááŒá±á¬ááºážáá²ááŸá¯áá»á¬áž-
- C++ áá¬áá¬á áá¬ážá¡ááœáẠáá°áááºážáá¯ááºááᯠááááºáááºážááŸááºážáá¬ážááá·áº C++17 á¡á á¬áž C++17 á ᶠ(-std=gnu++14) ááᯠá¡áá¯á¶ážááŒá¯ááẠááŒá±á¬ááºážáá¬ážáááºá á¡ááŒá¬áž templates áá»á¬ážááᯠparameter (-fno-new-ttp-matching) á¡ááŒá áºá¡áá¯á¶ážááŒá¯ááá·áº ááá°áá¬áá¯á¶á á¶áá»á¬ážááᯠáá¯ááºáá±á¬ááºááá·áºá¡áá« C++17 á¡ááŒá¯á¡áá°á¡áá áºááᯠááœá±ážáá»ááºááááºááẠááŒá áºááá¯ááºáááºá
- áááºááá¯áá®á§áááá¬áá»á¬ážáááºáá±á¬ááºááŒááºážá ááœá²áá±áá»áá¬ážáá±ážááá·áºááŒá¬ážáá¶ááááºááááááºáá»á¬ážááá¯áá»á±á¬áºááœááºááœá¬ážááŒááºážááŸáá·áº áááºááá¯áá®ááŸáá·áºáá¯ááºáá±á¬ááºááá·áºá¡áá« á¡ááŒá¬ážá¡ááŸá¬ážá¡ááœááºážá¡áá»áá¯á·ááᯠáá¯á¶ážááŒááºááá¯ááºá á±ááá·áº AddressSanitizer tool ááá¬á·ááºáá²á¡ááŸáááºááŒáŸáá·áºááŒááºážá¡ááœáẠáááºáá±á¬ááºážáá¶á·ááá¯ážááŸá¯á áá¬á·ááºáá²á¡ááŸáááºááŒáŸáá·áºááŒááºážááᯠáááºááŸáááœáẠAArch64 áááá¯áá¬á¡ááœááºáá¬áááŸáááá¯ááºááŒá®áž Linux kernel ááᯠááŒá¯á á¯áá±á¬á¡áá«ááœáẠá¡áá¯á¶ážááŒá¯áááºá¡á¬áá¯á¶á áá¯ááºáá¬ážáááºá á¡áá¯á¶ážááŒá¯áá°áá±áá¬ááœááºá¡á áááºá¡ááá¯ááºážáá»á¬ážááá¯áááºáá±á¬ááºááá·áºá¡áá« AddressSanitizer áá¬á·ááºáá²á¡ááŸáááºááŒáŸáá·áºááŒááºážááá¯ááœáá·áºáááºá á¡áᶠ"-fsanitize=hwaddress" ááŸáá·áº kernel á¡áᶠ"-fsanitize=kernel-hwaddress" ááᯠááá·áºááœááºážáá¬ážáááºá
- á¡ááŸá¬ážááŸá¬ááŒááºááŒááºážááá¯ááºáᬠá¡áá»ááºá¡áááºááᯠáááºáá®ážááá·áºá¡áá«á DWARF 5 áá±á¬áºáááºááᯠááááºáá¬ážááŸááºážáá»á¬ážááŸáá·áº ááŸáá¯ááºážááŸááºáá«á 25% ááá¯ááá¯áá»á áºáá»á áºáá±á¬ á¡ááŸá¬ážááŸá¬ááŸá¬ááœá±ááŒááºážáá±áá¬ááᯠáá¯ááºáá±ážááá¯ááºá á±ááá·áº áá°ááá¯á¶á á¶ááŒáá·áº á¡áá¯á¶ážááŒá¯áá«áááºá DWARF 5 á¡ááœáẠá¡ááŒáá·áºá¡ááá¶á·ááá¯ážááŸá¯ á¡áááºážáá¯á¶áž binutils áá¬ážááŸááºáž 2.35.2 ááá¯á¡ááºáááºá DWARF 5 áá±á¬áºáááºááᯠGDB 8.0á valgrind 3.17.0á elfutils 0.172 ááŸáá·áº dwz 0.14 ááááºážá á¡ááŸá¬ážááŸá¬ááŒááºááá·áºáááááá¬áá»á¬ážááœáẠáá¶á·ááá¯ážáá¬ážáááºá DWARF áá¡ááŒá¬ážáá¬ážááŸááºážáá»á¬ážááá¯á¡áá¯á¶ážááŒá¯á á¡ááŸá¬ážááŸá¬ááá¯ááºáá»á¬ážááá¯áá¯ááºáá¯ááºáááºá ááœá±ážáá»ááºá áᬠ"-gdwarf-2", "-gdwarf-3" ááŸáá·áº "-gdwarf-4" ááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºáá«áááºá
- GCC áááºáá±á¬ááºáá¬ááœáẠá¡áá¯á¶ážááŒá¯ááá¯ááºááá·áº compilers áá»á¬ážá¡ááœáẠááá¯á¡ááºáá»ááºáá»á¬áž ááá¯ážáá¬áá²á·áááºá compiler ááẠááᯠC++11 á á¶ááŸá¯ááºážááᯠáá¶á·ááá¯ážáá±ážáááẠ(ááááºá C++98 ááá¯á¡ááºáááº)á ááá¯ááá¯áááºááŸá¬á GCC 10 ááẠGCC 3.4 ááá¯áááºáá±á¬ááºááẠáá¯á¶áá±á¬ááºáá«áá GCC 11 ááá¯áááºáá±á¬ááºáááºá¡ááœáẠá¡áááºážáá¯á¶áž GCC 4.8 ááá¯á¡ááºáá«áááºá
- á¡ááŸáá¯ááºáá¯á¶áá»á¬áž ááááºážáááºážááŒááºážá¡ááœáẠááá¯ááºáá»á¬ážá á¡áááºááŸáá·áº áááºáá±áá¬ááᯠLTO ááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬áẠááŒá¯áá¯ááºáááºá¡ááœáẠááá¯á¡ááºáá±á¬ áááºáá±á¬ááºážá¡áá»ááºá¡áááºáá»á¬ážááᯠááŒá±á¬ááºážáá²áá¬ážáá«áááºá áááºážááŒá±á¬ááºážááᯠ"-dumpbase", "-dumpdir" ááŸáá·áº "-save-temps=*" ááœá±ážá áá¬áá»á¬ážááŸáá áºááá·áº ááŒááºáá¬ážá áœá¬ áááŒá±á¬ááºážáá²áá«á á€ááá¯ááºáá»á¬ážááᯠáááºááŸááááºážááœáŸááºááœáẠá¡ááŒá²ááááºážáááºážáá¬ážáááºá
- HSAIL (Heterogeneous System Architecture Intermediate Language) áá¬áá¬á áá¬ážááŒáá·áº á¡áá¯á¶ážááŒá¯áááºá¡ááœáẠááœááá±á¬áºááẠBRIG á¡ááœáẠáá¶á·ááá¯ážááŸá¯ááᯠáááºááá¯ááºážááá¯ááºááŒá®áž áááŒá¬áá® áááºááŸá¬ážáá«áááºá
- ThreadSanitizer áá¯áẠ(-fsanitize=thread) á á áœááºážáááºáá»á¬ážááᯠáá»á²á·ááœááºáá¬ážááŒá®ážá áá»á¬ážá áœá¬áá±á¬ á¡ááá®áá±ážááŸááºážáá áºáá¯á ááá°áá®áá±á¬ á¡ááºáá»ááºáá»áŸááºáá»á¬ážá០áá°áá®áá±á¬áá±áá¬ááᯠáá»áŸáá±ááá·áºá¡áá« ááŒáá¯ááºááœá²á¡ááŒá±á¡áá±áá»á¬ážááᯠááááŸáááá¯ááºááẠáá®ááá¯ááºážáá¯ááºáá¬ážáááºá á¡áá áºááœááºááŸáááŸá¯ááœáẠá¡á á¬ážááá¯áž runtime ááŸáá·áº áááºáááºážáá»ááºáá»á¬ážá¡ááœáẠáá¶á·ááá¯ážááŸá¯á¡ááŒáẠLinux kernel á¡ááœááºážááŸá áá°áá»áá¯ážáá±ážá¡ááŒá±á¡áá±áá»á¬ážááᯠdynamically detect áá¯ááºááá¯á· áá®ááá¯ááºážáá¯ááºáá¬ážááá·áº KCSAN (Kernel Concurrency Sanitizer) á¡ááŸá¬ážááŸá¬ááŒááºáááááá¬á¡ááœáẠáá¶á·ááá¯ážááŸá¯áááºáž áá«ááŸááá«áááºá ááœá±ážáá»ááºá áá¬á¡áá áºáá»á¬áž "-param tsan-distinguish-volatile" ááŸáá·áº "-param tsan-instrument-func-entry-exit" ááá¯á·ááᯠááá·áºááœááºážáá¬ážáááºá
- áá±á¬áá«ááŸá¬ááœá±áá±ážá á¬áá»á¬ážááœáẠááᯠáá±á¬áºáá¶áá¶áá«ááºáá»á¬ážááẠá á¬ááŒá±á¬ááºážáá¡á á០ááá¯ááºáá±ááœááºááŒááºážááá¯ááºáá±á¬áºáááºáž á¡ááŸááºááááºááœáẠmulti-byte á¡áá¹ááá¬áá»á¬ážááŸáá·áº áá»ááºážá¡ááœááºážáá±áá¬áá»á¬ážá áœá¬áá°áá¬ážáá±á¬ á á¬áá¯á¶ážáá»á¬ážááᯠááá·áºááœááºážáá¬ážáá±á¬ áá±á¬áºáá¶áá¶áá«ááºáá»á¬áž (á¥ááá¬á á á¬áá¯á¶áž ð ááẠáá¬áá°ážááŸá áºáá¯áá°áá¬ážááŒá®ážá 4 bytes ááŒáá·áº áá¯ááºáá¯ááºáá¬ážáááºá á¡áá¬ážáá°áááºá áááºááºá¡áá¹ááá¬áá»á¬ážááᯠááá¯á¡áá« á¡áá»áá¯á·áá±á¬áá±áá¬ááœááºá¡áá±á¡ááœáẠ(-ftabstop ááœá±ážá áá¬á áá¯á¶áá± 8) ááŸáá áºááá·áº áá¯á¶áá±á¬áºáá¬ážáá«áááºá á¡ááŒá¯á¡áá°áá±á¬ááºážááᯠááŒááºáááºááá°áááºá â-fdiagnostics-column-unit=byteâ ááœá±ážáá»ááºááŸá¯ááᯠá¡ááá¯ááŒá¯áá¬ážááŒá®áž áááŠážáááºááá¯áž (0 ááá¯á·ááá¯áẠ1 á០áá¶áá«ááºá ááº) ááᯠáá¯á¶ážááŒááºááẠ- â-fdiagnostics-column-origin=â ááœá±ážáá»ááºááŸá¯á
- vectorizer ááẠfunction áá¡ááŒá±á¬ááºážá¡áá¬áá áºáá¯áá¯á¶ážááá¯ááá·áºááœááºážá ááºážá á¬ážááŒá®áž control-flow graph (CFGá control-flow graph) ááŸá ááááºáá¯ááºááœááºáá»á¬ážáá®ááá¯á· áááºážáá¯á¶áá»á¬ážááŸáá·áºáááºá ááºáá±áá±á¬ á á®áá¶áá±á¬ááºááœááºááŸá¯á áœááºážáááºáá»á¬ážááᯠáá±á«ááºážááá·áºáá«áááºá
- ááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬ááºááŒá¯áá¯ááºáá°ááẠáá°áá®áá±á¬ááááºážááŸááºá¡á¬áž ááá¯ááºá¡áá¯á¶ážá¡ááŸá¯ááºážá¡ááŒá áºááá¯á· ááŸáá¯ááºážááŸááºááá·áº á¡ááŒá±á¡áá±ááá¯ááºáᬠáá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠáááºááá¯ááºááŒá±á¬ááºážáá²ááẠá áœááºážáááºááᯠáá±á¬áºáá±á¬ááºáá±ážáááºá á¡áá¬áááºááœááºá áá áºá ááºážáááºááŒááºáž ááœáŸááºááŒá¬ážáá»ááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á ááá¯ááºá¡áá¯á¶ážá¡ááŸá¯ááºážááᯠáá¯ááºáá¯ááºáá¬ážááá¯ááºááẠ(ááá¯áá²á·ááá¯á·áá±á¬ ááŒá±á¬ááºážáá²ááŒááºážááᯠááááºážáá»á¯ááºáááºá¡ááœáẠâ-fbit-testsâ ááœá±ážá áá¬ááᯠáá±á«ááºážááá·áºáá¬ážáááº)á
- áá¯ááºáá¯á¶ážáá¯ááºáááºáž á¡ááŒááºá¡ááŸáẠááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬áẠááŒáŸáá·áºáááºáá¬ážáááºá áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠáá±á«áºááá¯ááá·áºá¡áá« áá±ážááœááºááá¯ážáá»áá¯ážáá»á¬ážááᯠááŒá±áá¬áá¶ááŒá®áž ááœá²ááŒááºážá áááºááŒá¬ááŸá¯á áááá»ááŸá¯ááᯠááŒáŸáá·áºáááºááẠIPA-modref áááºááŸááºá¡áá Ạ(-fipa-modref) ááᯠáá±á«ááºážááá·áºáá¬ážáááºá á á¯á ááºážááŸá¯á¡ááœááºáž ááŸááºáá¬ááºáá¯á¶ážá áœá²ááŸá¯ááᯠáá»áŸá±á¬á·áá»áá±ážááá·áº IPA-ICF pass (-fipa-icf) ááᯠááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬áẠá¡áá±á¬ááºá¡áááºáá±á¬áºááŒááºážááŸáá·áº áá°áá®áá±á¬áá¯ááºáá¯á¶ážáá»á¬ážááᯠáá±á«ááºážá ááºáá¬ážááá·áº áá áºá á¯áá áºá ááºážáááºážáá¯ááºáá±á¬ááºááŸá¯á¡áá±á¡ááœááºááᯠááá¯ážá á±áááºá IPA-CP (Interprocedural constant propagation) pass ááœááºá loops áá»á¬ážá áááá¬ážáá±á¬ áááºááááááºáá»á¬ážááŸáá·áº á¡ááºá¹áá«áááºáá»á¬ážááᯠááá·áºááœááºážá ááºážá á¬ážáᬠááá·áºááŸááºáž heuristics ááᯠááŒáŸáá·áºáááºáá¬ážáá«áááºá
- Linking Time Optimizations (LTO) ááœááºá bytecode áá±á¬áºáááºááẠá¡ááœááºá¡á á¬ážááᯠáá»áŸá±á¬á·áá»áááºááŸáá·áº áá¯ááºáá±á¬ááºááŸá¯á¡ááŒááºááŸá¯ááºážááᯠááŒáŸáá·áºáááºááẠá¡áá±á¬ááºážáá¯á¶ážáá¯ááºáá±á¬ááºáá¬ážáááºá áá»áááºáááºááŸá¯á¡ááá·áºá¡ááœááºáž á¡ááŒáá·áºáá¯á¶ážááŸááºáá¬ááºáá¯á¶ážá áœá²ááŸá¯ááᯠáá»áŸá±á¬á·áá»áá«á
- áá¯ááºáááá¯ááá¯ááºááŒá¯áá¯ááºááŒááºážá ááááºáá»á¬ážá¡áá±á«áº á¡ááŒá±áá¶á ááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬ááºááŒá¯áá¯ááºááŒááºáž (PGO - Profile-guided optimization) ááœááºá áá¯ááºáá±á¬ááºááŸá¯á¡ááºá¹áá«áááºáá»á¬ážááᯠááœá²ááŒááºážá áááºááŒá¬ááŸá¯á¡áá±á«áº á¡ááŒá±áá¶á ááá¯ááá¯ááá·áºáá»á±á¬áºáá±á¬áá¯ááºááá¯áá¯ááºáá±ážááá¯ááºá á±ááá·áºá GCOV áá±áá¬áá«ááŸááá±á¬ ááá¯ááºá¡ááœááºá¡á á¬ážááẠáá¯ááá±á¬ááºáá¬áá»á¬ážá ááá¯áá»á áºáá»á áºáá±á¬áá¯ááºááá¯ážááŸá¯ááŒá±á¬áá·áº áá»á±á¬á·áá»ááœá¬ážááẠ. ááœááºááá¯ááºáá±á«áºááá¯ááŸá¯áá»á¬ážááœáẠáá±á¬ááºáááºááá·áºáááºáá»ááºáá»á¬ážááᯠááŒá±áá¬áá¶ááŒááºážááŒáá·áº "-fprofile-values" áá¯ááºááᯠááŒáŸáá·áºáááºáá¬ážáááºá
- API ááŸáá·áº multi-core ááŸáá·áº hybrid (CPU+GPU/DSP) á áá áºáá»á¬ážáá±á«áºááœáẠáá»áŸáá±áá¬ážáá±á¬ memory ááŸáá·áº vectorization áá°áá Ạ(SIMD) ááá¯á·áá«ááŸááá±á¬ á¡ááŒáá¯ááºáááá¯ááááºážáááºážáááºážáááºážáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááŒááºážá¡ááœáẠAPI ááŸáá·áº áááºážáááºážáá»á¬ážááᯠáááºááŸááºáá±ážááá·áº OpenMP 5.0 (Open Multi-Processing) á á¶ááŸá¯ááºážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááŒááºážááœááºá áááºáááºá ááœá²áá±áá±ážááá·áº ááœáŸááºááŒá¬ážáá»ááºááŸáá·áº OpenMP áááºáá±á¬ááºááŸá¯áá»á¬ážááœáẠááœá²ááŒá¬ážáá±á¬ ááŸáá·áºáááºáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááá¯ááºá áœááºážá¡ááœáẠáááŠážáá¶á·ááá¯ážááŸá¯ áááºááá·áºáá¬ážáááºá OMP_TARGET_OFFLOAD áááºáááºážáá»áẠááŒá±á¬ááºážáá²ááŸá¯á¡ááœáẠáá¶á·ááá¯ážááŸá¯ááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáá²á·áááºá
- C, C++ ááŸáá·áº Fortran áá¬áá¬á áá¬ážáá»á¬ážá¡ááœáẠáá¶á·ááá¯ážáá±ážáá¬ážááá·áº OpenACC 2.6 á¡ááŒáá¯ááºáááá¯ááááºážáááºážáááºááŸááºáá»ááºááᯠááá¯ááá¯áá±á¬ááºážááœááºá¡á±á¬ááºááŒá¯áá¯ááºáá¬ážááŒá®ážá áááºážááẠGPUs ááŸáá·áº NVIDIA PTX áá²á·ááá¯á·áá±á¬ á¡áá°ážááŒá¯áááá¯áááºáá¬áá»á¬ážááœáẠáá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠáááºááŸá¬ážááŒááºážá¡ááœáẠáááááá¬áá»á¬ážááᯠáááºááŸááºáá±ážáááºá
- C áá¬áá¬á áá¬ážáá»á¬ážá¡ááœááºá áááºááœáŸááºážáá»ááºá¡áá Ạâno_stack_protectorâ ááᯠá¡áá¯á¶ážááŒá¯áá¬ážááŒá®áž stack á¡áá¬á¡ááœááºááᯠááœáá·áºááá¬ážááá·áºááá·áº áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠá¡ááŸááºá¡áá¬ážááŒá¯ááẠáá®ááá¯ááºážáá¯ááºáá¬ážááŒá®áž (â-fstack-protectorâ)á "malloc" áááºááœáŸááºážáá»ááºá¡á¬áž ááœá²áá±ááŒááºážááŸáá·áº ááœááºááŒá±á¬ááºááŒááºážá¡ááœáẠááŸááºáá¬ááºááœá²áá±ááŒááºážááŸáá·áº ááœááºááŒá±á¬ááºááŒááºážá¡ááœáẠáá±á«áºááá¯ááŸá¯á¡ááœá²áá»á¬ážááᯠáá±á¬áºáá¯ááºááŒááºážá¡á¬áž áá¶á·ááá¯ážááẠstatic analyzer ááœáẠá¡áá¯á¶ážááŒá¯áá¬ážááá·áº memory ááŸáá·áº á¡áá¯ááºáá¯ááºáá¬ááœáẠáá¯á¶ááŸááºá¡ááŸá¬ážá¡ááœááºážáá»á¬ážááᯠááœá²ááŒá¬ážáááºááŸááºááẠ(ááŸááºáá¬ááºááá¯á ááá·áºááŸá¯á ááœááºááŒá±á¬ááºááŒá®ážáá±á¬áẠá¡áá¯á¶ážááŒá¯ááŸá¯á á¡ááá²á· áá¯ááºáá±á¬ááºáá»ááºááᯠááŸá áºá áá±á«áºááá¯ááŒááºáž á áááºááŒáá·áº) ááŸáá·áº compiler ááááá±ážáá»ááºáá»á¬ážááœáẠâ-Wmismatched-deallocâá â-Wmismatched-new-deleteâ ááŸáá·áº â-Wfree-nonheap-objectâ ááá¯á·ááẠmemory deallocation ááŸáá·áº memory allocation áá¯ááºáá±á¬ááºááŸá¯áá»á¬ážááŒá¬áž áááá¯ááºáá®ááŒá±á¬ááºáž á¡áááá±ážááŒááºážá
- C áá¬áá¬á
áá¬ážá¡ááœáẠááááá±ážáá»ááºá¡áá
áºáá»á¬áž ááá·áºááœááºážáá¬ážáá«áááºá
- "-Wmismatched-dealloc" (áá°áá¡á¬ážááŒáá·áº ááœáá·áºáá¬ážáááº) - ááŸááºáá¬ááºááœá²áá±áá±ážááá·áºáá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááŸáá·áº ááá¯ááºáá®ááŸá¯áááŸááá±á¬ ááœáŸááºáá¶ááá¯á¡áá¯á¶ážááŒá¯ááá·áº áááºááá¯áá®ááœá²áá±áá»áá¬ážááŒááºážááá¯ááºáᬠáá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠááááá±ážáááºá
- "-Wsizeof-array-div" ("-Wall" ááᯠáááºááŸááºááá·áºá¡áá« ááœáá·áºáá¬ážáááº) - ááá¯ááºážááŒá¬ážááŸá¯ááẠarray ááŒááºá ááºá á¡ááœááºá¡á á¬ážááŸáá·áº áááá¯ááºáá®áá«á á¡á±á¬áºááá±áá¬ááŸá áºáá¯ááᯠááá¯ááºážááŒá¬ážááẠááááá±ážáááºá
- "-Wstringop-overread" (áá°áá¡á¬ážááŒáá·áº ááœáá·áºáá¬ážáááº) - array áááºááááááºá¡ááŒááºáááºááŸá á§áááá¬á០áá±áá¬áá»á¬ážááᯠáááºááá·áº string function ááá¯áá±á«áºááá¯ááŒááºážá¡ááŒá±á¬ááºáž ááááá±ážáááºá
- "-Wtsan" (áá°áá¡á¬ážááŒáá·áº ááœáá·áºáá¬ážáááº) - ThreadSanitizer ááœáẠááá¶á·ááá¯ážááá¯ááºáá±á¬ á¡ááºá¹áá«áááºáá»á¬áž (á¥ááᬠstd::atomic_thread_fence áá²á·ááá¯á·) ááᯠá¡áá¯á¶ážááŒá¯ááŒááºážá¡ááŒá±á¬ááºáž ááááá±ážáááºá
- â-Warray-parameterâ ááŸáá·áº â-Wvla-parameterâ (â-Wallâ ááᯠáááºááŸááºáá±á¬á¡áá«ááœáẠááœáá·áºáá¬ážáááº) - áá¯á¶áá± ááŸáá·áº ááœá²ááŒá¬ážááá¯ááºáá±á¬ á¡áá»á¬ážá¡áááºážáá»á¬ážááŸáá·áº áááºá ááºáá±áá±á¬ ááœá²ááœá²ááá¯ááºáá±á¬ á¡áá»á¬ážá¡áááºážáá»á¬ážááá¯ááºáᬠá¡ááŒá±á¬ááºážááŒáá»ááºáá»á¬ážá ááŒá±ááŒá¬áá»ááºáá»á¬ážááŸáá·áº ááá¯ááºáá®ááŸá¯ áááŸááá±á¬ áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠáááºáá±á¬ááºážááááá±ážáá«áááºá
- "-Wuninitialized" ááááá±ážáá»ááºááẠááá¯á¡áá«ááœáẠá áááºáá¯ááºáá±á¬ááºááŒááºážáááŸááá±á¬ ááá¯ááºážááá áºááŒáá·áº ááœá²áá±áááºááŸááºáá¬ážáá±á¬ áááºááá¯áá®á០áááºááŸá¯ááẠááŒáá¯ážáááºážááŸá¯áá»á¬ážááᯠááœá±á·ááŸáááá«áááºá
- "-Wfree-nonheap-object" ááááá±ážáá»ááºááẠááá¯ááºážááá áºáááºááá¯áá®ááœá²áá±ááŸá¯áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááŸáááá·áº ááááŸáááá¯ááºáá±á¬ á¡ááŸááºá¡áá¬ážááŒáá·áº áááºááá¯áá®ááœá²áá±ááŸá¯ááá¯ááºáᬠáá¯ááºáá±á¬ááºáá»ááºáá»á¬ážááᯠááœáŸááºááŒááá·áºááá á¹á áá»á¬ážááœáẠá¡áááá¹áá«ááºááœáá·áºááá¯áááºá
- "-Wmaybe-uninitialized" ááááá±ážáá»ááºááẠááá¯ááºáá±á¬ááºááá±ážáá±á¬ ááŸááºáá¬ááºáááºáá±áá¬áá»á¬ážááᯠáááºááœáŸááºážááá·áº áá¯ááºáá±á¬ááºáá»ááºáá»á¬ážáá®ááá¯á· ááœáŸááºááŒáá»ááºáá»á¬ážááᯠááŒááºááœá¬ážááá·áº áá±á¬ááºááŸááºážááŸá¯ááᯠááá¯ážáá»á²á·áá¬ážáááºá
- C áá¬áá¬á áá¬ážá¡ááœááºá C2X á á¶áááºááŸááºáá»ááºáá±á¬ááºá¡ááœááºážá០áá®ááœááºáá¬ážáá±á¬ á¡ááºá¹áá«áááºá¡áá áºáá áºááá¯ááºážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááá¯ááºáá«ááŒá® (-std=c2x ááŸáá·áº -std=gnu2x ááᯠáááºááŸááºááŒááºážááŒáá·áº ááœáá·áºáá¬ážáááº) : macro BOOL_MAX ááŸáá·áº BOOL_WIDTHá áá¯ááºáá±á¬ááºáá»ááºááœáẠá¡áá¯á¶ážáááŒá¯áá±á¬ ááá·áºáááºáá±á¬ááºáá»á¬ážá á¡áááºáá»á¬ážááᯠá áááºááŒáá¯ááºááœá±ážáá»ááºáá±á¬áºááŒááŒááºáž á¡áááá¹áá«ááºáááºááŸááºáá»ááºáá»á¬áž (C++ ááœááºáá²á·ááá¯á·)á áááºááœáŸááºážáá»áẠâ[ [nodiscard]]âá áááá¯áááºáá¬á¡á±á¬áºááá±áᬠâ__has_c_attributeâá áááºáááᯠFLT_IS_IEC_60559á DBL_IS_IEC_60559á LDBL_IS_IEC_60559á __STDC_WANT_IEC_EXBLTAN_60559á SNANá LDBL_SNANá DEC_INFINITY ááŸáá·áº DEC_NANá FloatN á¡ááœáẠNaN=macro á _FloatNx ááŸáá·áº _DecimalNá ááŒá±ááŒá¬áá»ááºáá»á¬ážáááá¯ááºáá®ááŸáá·áº ááŒááºáá±á«ááºážááŸááºážáááºážáá»á¬ážáá¡áá¯á¶ážááœáẠáá¯ááºá¡ááŸááºáá»á¬ážááᯠáááºááŸááºáá±ážááá¯ááºáááºá
- C++ á¡ááœááºá C++ 20 á á¶ááŸá¯ááºážááœáẠá¡ááá¯ááŒá¯áá¬ážáá±á¬ ááŒá±á¬ááºážáá²ááŸá¯áá»á¬ážááŸáá·áº áá®ááœááºáááºážáá áºááŸá¯áá»á¬ážá á¡á áááºá¡ááá¯ááºážáá áºáá¯ááŒá áºááá·áº "consteval virtual"á á¡áá¬ááá¹áá¯áá»á¬ážá áááá¶ááá¬á¡áá¯á¶ážá¡ááœáẠpseudo-destructorsá enum á¡áááºážááᯠá¡áá¯á¶ážááŒá¯ááŒááºážááŸáá·áºá "new" expression ááŸá array á á¡ááœááºá¡á á¬ážááᯠááœááºáá»ááºááŒááºážá
- C++ á¡ááœááºá á¡áá¬ááẠC++23 á á¶ááŸá¯ááºáž (-std=c++23á -std=gnu++23á -std=c++2bá -std=gnuá -std=c++2bá -std=gnu ++XNUMXb)á á¥ááá¬á¡á¬ážááŒáá·áºá ááá¯á¡áá«ááœáẠáááºááŸááºááá¯ážáá¬ážáá±á¬ size_t áááºááá¯ážáá»á¬ážá¡ááœáẠáááááá±á¬ááºáááºááœá² âzuâ á¡ááœáẠáá¶á·ááá¯ážááŸá¯ ááŸááá¬áá«ááŒá®á
- libstdc++ ááẠFloating Point á¡áá»áá¯ážá¡á á¬ážáá»á¬ážá¡ááœáẠstd::from_chars ááŸáá·áº std::to_chars á¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯áá»á¬ážááᯠáááá«ááºážá¡áá«á¡ááẠC++17 á á¶ááŸá¯ááºážá¡ááœáẠááá¯ááá¯áá±á¬ááºážááœááºáá¬áá«áááºá std::bit_castá std::source_locationá atomic operations á á±á¬áá·áºááá¯ááºážááŒá®áž á¡áááá±ážááŒááºáž á¡áá«á¡ááẠC++20 á á¶á á¡á áááºá¡ááá¯ááºážá¡áá áºáá»á¬ážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºáá²á·ááŒá®ážá á á á ááá¯á·á¡ááŒáẠá¡áá¬ááẠC++ 23 á á¶ááŸá¯ááºáž (std::to_underlyingá std::is_scoped_enum) á á¡á áááºá¡ááá¯ááºážáá»á¬ážá á¡ááŒáá¯ááºáá±áá¬áá¯ááºáá±á¬ááºááŒááºáž á¡áá»áá¯ážá¡á á¬ážáá»á¬áž (SIMDá Data-Parallel Types) á¡ááœáẠá ááºážáááºááŸá¯ááá¯ááºáᬠáá¶á·ááá¯ážááŸá¯ áááºáá±á¬ááºážááá·áºáá¬ážáá«áááºá std::uniform_int_distribution ááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááŸá¯ááᯠá¡ááŸáááºááŒáŸáá·áºááá¯ááºáá«ááŒá®á
- áá¯ááºáá¯ááºáá¯ááºáá°á¡á¬áž á¡ááŒá¬ážáá¯ááºáááºážá ááºáá»á¬ážááœáẠááŒáŸá¯ááºááŸá¶áááºá¡ááœáẠáá»áŸáá±áá¬ážáá±á¬á á¬ááŒáá·áºááá¯ááºááŒá áºááá·áº libgccjit á០á¡ááºááºáá¬á¡áááºá¡ááœá±ážá¡áá¶ááᯠáááºááŸá¬ážááŒá®áž JIT á bytecode á compilation ááᯠá ááºáá¯ááºá¡ááŒá áºááá¯á· á á¯á ááºážááẠáááºážááá¯á¡áá¯á¶ážááŒá¯áááºá MinGW á¡ááœáẠlibgccjit áááºáá±á¬ááºááẠá áœááºážáááºááᯠááá·áºááœááºážáá¬ážáááºá
- AArch64 Armv8-R áááá¯áᬠ(-march=armv8-r) á¡ááœáẠáá¶á·ááá¯ážááŸá¯ áááºááá·áºáá¬ážáááºá AArch64 ááŸáá·áº ARM áááá¯áá¬áá»á¬ážá¡ááœááºá áááá¯áááºáá¬áá»á¬ážá¡ááœáẠáá¶á·ááá¯ážááŸá¯ (áá«áá¬áá®áá¬áá»á¬áž -mcpu ááŸáá·áº -mtune )- Arm Cortex-A78 (cortex-a78), Arm Cortex-A78AE (cortex-a78ae), Arm Cortex-A78C (cortex-a78c) , Arm Cortex- X1 (cortex-x1), Arm Neoverse V1 (neoverse-v1) ááŸáá·áº Arm Neoverse N2 (neoverse-n2)á Fujitsu A64FX (a64fx) ááŸáá·áº Arm Cortex-R82 (cortex-r82) CPU áá»á¬ážááá¯áááºáž ááá·áºááœááºážáá¬ážááŒá®áž AArch64 áááá¯áá¬áááºáá¬áá»á¬ážááá¯áᬠáá¶á·ááá¯ážáá±ážáá¬ážáááºá
- Armv8.3-a (AArch64/AArch32)á SVE (AArch64)á SVE2 (AArch64) ááŸáá·áº MVE (AArch32 M-profile) SIMD ááœáŸááºááŒá¬ážáá»ááºáá»á¬ážááᯠáá±á«ááºážááá·áºááŒááºážá áá¯ááºááŒááºážá ááŒáŸá±á¬ááºááŒááºáž ááŸáá·áº áá¯á¶á á¶ááœá²áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááŒááºážá¡ááœáẠáááºáá±á¬ááºážáá¶á·ááá¯ážááŸá¯ ááŸá¯ááºááœá±ážáá±á¬áá¶áá«ááºáá»á¬ážá MVE ááœáŸááºááŒá¬ážáá»ááºá¡á á¯á¶ááᯠá¡áá¯á¶ážááŒá¯á ARM á¡ááœáẠautovectorization á¡ááœáẠáááŠážáá¶á·ááá¯ážááŸá¯ áá±á«ááºážááá·áºáá¬ážáááºá
- ARM ááááºáá±á¬ááºážáá»á¬ážá¡ááœááºá ACLE Q3 2020 áááºááŸááºáá»ááºááœáẠááŸááºáááºážáááºáá¬ážáá±á¬ NEON ááœáŸááºááŒá¬ážáá»ááºáá»á¬ážá¡á¬ážáá¯á¶ážááᯠááœáŸááºážááŒá¯á¶áá¬ážááá·áº ááá¯ážáá»á²á· vector ááœáŸááºááŒá¬ážáá»ááºáá»á¬áž (SIMD) ááŒáá·áº á á¯á ááºážáá¬ážáá±á¬ áá±á«ááºážá áẠC áá¯ááºáá±á¬ááºáá»ááºáá»á¬áž (Intrinsics) á¡á á¯á¶á¡áááºááᯠáá¶á·ááá¯ážáá±ážáá«áááºá
- GCN microarchitecture ááᯠá¡ááŒá±áá¶á AMD GPU áá»á¬ážá¡ááœáẠáá¯ááºáá¯ááºáá±ážáááºá¡ááœáẠgfx908 GPU á¡ááœáẠáá¶á·ááá¯ážááŸá¯ááᯠáá±á¬ááºáá¶ááœáẠááá·áºááœááºážáá¬ážáááºá
- áááá¯áááºáá¬á¡áá
áºáá»á¬ážááŸáá·áº ááœáŸááºááŒá¬ážáá»ááºá¡á
á¯á¶á¡áááºá¡áá
áºáá»á¬ážá¡ááœáẠáá¶á·ááá¯ážááŸá¯ááá·áºááœááºážáá¬ážáááº-
- Intel Sapphire Rapids (-march=sapphirerapidsá MOVDIRIá MOVDIR64Bá AVX512VP2INTERSECTá ENQCMDá CLDEMOTEá SERIALIZEá PTWRITEá WAITPKGá TSXLDTRKá AMT-TILEá AMX-INTF8 ááŸáá·áº AMX-INTF16 ááœáŸááºááŒá¬ážáá»ááºáá»á¬ážá¡ááœáẠáá¶á·ááá¯ážááŸá¯áá±ážáááº
- Intel Alderlake (-march=alderlakeá CLDEMOTEá PTWRITEá WAITPKGá SERIALIZEá KEYLOCKERá AVX-VNNI ááŸáá·áº HRESET ááœáŸááºááŒá¬ážáá»ááºáá»á¬ážá¡ááœáẠáá¶á·ááá¯ážááŸá¯áá±ážáááº)á
- Intel Rocketlake (-march=rocketlakeá SGX áá¶á·ááá¯ážááŸá¯ááá«áá² Rocket Lake ááŸáá·áºáááºáá°áááº)á
- AMD Zen 3 (-march=znver3)á
- Intel áááá¯áááºáá¬áá»á¬ážááá¯á¡ááŒá±áá¶áá¬ážáá±á¬ IA-32/x86-64 á áá áºáá»á¬ážá¡ááœááºá áááá¯áááºáá¬ááœáŸááºááŒá¬ážáá»ááºá¡áá ẠTSXLDTRKá SERIALIZEá HRESETá UINTRKEYLOCKERá AMX-TILEá AMX-INT8á AMX-BF16á AVX-VNNI ááá¯á·ááᯠáá¶á·ááá¯ážáá±ážáá¬ážáá«áááºá
- x86-64 áááá¯áá¬á¡ááá·áºáá»á¬ážááᯠááœá±ážáá»ááºááẠ"-march=x234-86-v[64]" á¡áá¶áá»á¬ážá¡ááœáẠáá¶á·ááá¯ážááŸá¯ áááºáá±á¬ááºážááá·áºááœááºážáá¬ážááẠ(v2 - SSE4.2á SSSE3á POPCNT ááŸáá·áº CMPXCHG16B ááá¯ážáá»á²á·ááŸá¯áá»á¬ážá v3 - AVX2 ááŸáá·áº MOVBE; v4 - AVX-512 )
- big-endian byte order ááŒáá·áº RISC-V á áá áºáá»á¬ážá¡ááœáẠáá¶á·ááá¯ážááŸá¯ áááºáá±á¬ááºážááá·áºáá¬ážáá«áááºá RISC-V ááœáŸááºááŒá¬ážáá»ááºá¡á á¯á¶áááá¯áá¬áááºááŸááºáá»ááºááá¬ážááŸááºážááá¯ááœá±ážáá»ááºááẠ"-misa-spec=*" option ááá¯áááºááá·áºáá¬ážáááºá Canary tags áá»á¬ážááᯠá¡áá¯á¶ážááŒá¯á AddressSanitizer ááŸáá·áº stack protection á¡ááœáẠáá¶á·ááá¯ážááŸá¯ áá±á«ááºážááá·áºáá¬ážáááºá
- áááá¯ááááºááŸá áá¯ááºáá¯ááºáá±á¬ááºááŸá¯áááºážááŒá±á¬ááºážáá»á¬ážááŸáá·áº áá±áá¬á
á®ážáááºážááŸá¯áá»á¬ážá á¡áááºážá¡ááŒá
áº-á¡áá±ážáá±ážáá±á¬ á¡ááŒááºá¡ááŸááºáá¯ááºáá¯á¶ážáá¯ááºáááºážááœá²ááŒááºážá
áááºááŒá¬ááŸá¯ááᯠáá¯ááºáá±á¬ááºááá·áº "-fanalyzer" static ááœá²ááŒááºážá
áááºááŒá¬ááŸá¯áá¯ááºá áááºáááºááá¯ážáááºááŸá¯á áá¯ááºááẠááŸááºáá¬ááºá§áááá¬áá
áºáá¯á¡ááœáẠfree() áá¯ááºáá±á¬ááºáá»ááºááá¯á· ááŸá
áºááŒáááºáá±á«áºááá¯ááŸá¯áá»á¬ážá ááá¯ááºáá±á¬áºááŒáá»ááºáá±á«ááºááŒá¬ážááŸá¯á ááá¯ážáá¬ážáá»ááºáááŸááá±á¬ááœáŸááºááŸááºáá»á¬ážááŒááºáááºážááŸá¯á ááœááºáááºážáá±á¬ááŸááºáá¬ááºáá¯á¶ážáá»á¬ážááᯠáááºáá±á¬ááºááŒáá·áºááŸá¯ááŒááºážá áááŠážááááºááá¬ážáá±á¬áááºááá¯ážáá»á¬ážááᯠá¡áá¯á¶ážááŒá¯ááŒááºážá
áááºááŒáá·áº á
á¯á
ááºážááŸá¯á¡ááá·áºááœáẠááŒá¿áá¬áá»á¬ážááᯠáá±á¬áºáá¯ááºááá¯ááºááẠáá¬ážááŸááºážá¡áá
áºááœááº-
- áááá¯ááááºá¡ááŒá±á¡áá±ááᯠááŒá±áá¬áá¶ááŒááºážá¡ááœáẠáá¯ááºááᯠáá¯á¶ážá ááŒááºáááºáá±ážáá¬ážááŒá®ážáá«ááŒá®á á¡ááœááºááŒá®ážáá¬ážáá±á¬ C ááá¯ááºáá»á¬ážááᯠá áááºááºáááºááŒááºážááá¯ááºáᬠááŒá¿áá¬áá»á¬ážááᯠááŒá±ááŸááºážááŒá®ážááŒá áºáááºá
- áááŠáž C++ áá¶á·ááá¯ážááŸá¯ áááºááá·áºáá¬ážáááºá
- Memory ááœá²áá±ááŸá¯ááŸáá·áº ááœá²áá±áá»áá¬ážááŸá¯ááœá²ááŒááºážá áááºááŒá¬ááŸá¯áá»á¬ážááᯠáá®ážááŒá¬áž malloc ááŸáá·áº á¡ááá²á·áá¯ááºáá±á¬ááºááŸá¯áá»á¬ážá០ááœá²áá»á±á¬áºáá²á·ááŒá®áž ááᯠá¡áá áº/áá»ááºááŒááºážááŸáá·áº á¡áá áº[]/delete[] ááᯠáá¶á·ááá¯ážáá±ážáá«áááºá
- áááºáá±á¬ááºážááááá±ážáá»ááºá¡áá áºáá»á¬áž- -Wanalyzer-shift-count-negativeá -Wanalyzer-shift-count-overflowá -Wanalyzer-write-to-const ááŸáá·áº -Wanalyzer-write-to-string-literalá
- á¡ááŸá¬ážááŸá¬ááŒááºááŒááºážááá¯ááºáᬠááœá±ážáá»ááºá áá¬á¡áá áºáá»á¬áž -fdump-analyzer-json ááŸáá·áº -fno-analyzer-feasibility ááᯠááá·áºááœááºážáá¬ážáááºá
- GCC á¡ááœáẠááááºá¡ááºáá»á¬ážááŸáá áºááá·áº ááœá²ááŒááºážá áááºááŒá¬áá°á¡á¬áž áá»á²á·ááœááºááá¯ááºá áœááºážááᯠá¡áá±á¬ááºá¡áááºáá±á¬áºááŒá®ážááŒá áºááẠ(á¥ááá¬á CPython ááœáẠááá¹áá¬áá¯á¶ážááá¯ááºáá¬áá±á¬á·áááºááŒááºáž (GIL) ááŸá¬ážááœááºážá áœá¬á¡áá¯á¶ážááŒá¯ááŸá¯ááᯠá á áºáá±ážááẠááááºá¡ááºáá áºáᯠááŒááºáááºáá¬ážáááº)á
source: opennet.ru