Π‘Π»Π΅Π΄ Π³ΠΎΠ΄ΠΈΠ½Π° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π±Π΅ΡΠ΅ ΠΏΡΡΠ½Π°ΡΠ° Π²Π΅ΡΡΠΈΡΡΠ° Π½Π° Π±Π΅Π·ΠΏΠ»Π°ΡΠ½ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ GCC 11.1, ΠΏΡΡΠ²Π°ΡΠ° Π·Π½Π°ΡΠΈΠΌΠ° Π²Π΅ΡΡΠΈΡ Π² Π½ΠΎΠ²ΠΈΡ ΠΊΠ»ΠΎΠ½ Π½Π° 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 (-std=gnu++17) Π²ΠΌΠ΅ΡΡΠΎ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π½ΠΈΡ ΠΏΠΎ-ΡΠ°Π½ΠΎ C++14. ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ ΡΠ΅Π»Π΅ΠΊΡΠΈΠ²Π½ΠΎ Π΄Π° Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΡΠ΅ Π½ΠΎΠ²ΠΎΡΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ Π½Π° C++17 ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΡΠ°Π±Π»ΠΎΠ½ΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π΄ΡΡΠ³ΠΈ ΡΠ°Π±Π»ΠΎΠ½ΠΈ ΠΊΠ°ΡΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ (-fno-new-ttp-matching).
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Ρ Π°ΡΠ΄ΡΠ΅ΡΠ½ΠΎ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° AddressSanitizer, ΠΊΠΎΠΉΡΠΎ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅ ΡΠ°ΠΊΡΠΈΡΠ΅ Π·Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄Π΅Π½ΠΈ ΠΎΠ±Π»Π°ΡΡΠΈ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ°, ΠΈΠ·Π»ΠΈΠ·Π°Π½Π΅ ΠΈΠ·Π²ΡΠ½ Π³ΡΠ°Π½ΠΈΡΠΈΡΠ΅ Π½Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π±ΡΡΠ΅Ρ ΠΈ Π½ΡΠΊΠΎΠΈ Π΄ΡΡΠ³ΠΈ Π²ΠΈΠ΄ΠΎΠ²Π΅ Π³ΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠ°ΠΌΠ΅Ρ. Π₯Π°ΡΠ΄ΡΠ΅ΡΠ½ΠΎΡΠΎ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ Π² ΠΌΠΎΠΌΠ΅Π½ΡΠ° Π΅ Π΄ΠΎΡΡΡΠΏΠ½ΠΎ ΡΠ°ΠΌΠΎ Π·Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° AArch64 ΠΈ Π΅ ΡΠΎΠΊΡΡΠΈΡΠ°Π½ΠΎ Π²ΡΡΡ Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux. ΠΠ° Π΄Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΡΠ΅ Ρ Π°ΡΠ΄ΡΠ΅ΡΠ½ΠΎΡΠΎ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ Π½Π° AddressSanitizer ΠΏΡΠΈ ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΈ Π½Π° ΠΏΠΎΡΡΠ΅Π±ΠΈΡΠ΅Π»ΡΠΊΠΎΡΠΎ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ, Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ ΡΠ»Π°Π³ΡΡ β-fsanitize=hwaddressβ ΠΈ ΡΠ»Π°Π³ΡΡ Π½Π° ΡΠ΄ΡΠΎΡΠΎ β-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, ΡΠ° ΠΏΠΎΠ²ΠΈΡΠ΅Π½ΠΈ. ΠΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΡΡ Π²Π΅ΡΠ΅ ΡΡΡΠ±Π²Π° Π΄Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΡΠ°Π½Π΄Π°ΡΡΠ° C++11 (ΠΏΡΠ΅Π΄ΠΈ ΡΠ΅ ΠΈΠ·ΠΈΡΠΊΠ²Π°ΡΠ΅ C++98), Ρ.Π΅. ΠΠΊΠΎ GCC 10 Π±Π΅ΡΠ΅ Π΄ΠΎΡΡΠ°ΡΡΡΠ΅Π½ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° GCC 3.4, ΡΠΎΠ³Π°Π²Π° ΠΏΠΎΠ½Π΅ GCC 11 ΡΠ΅Π³Π° Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° GCC 4.8.
- ΠΠΌΠ΅ΡΠΎ ΠΈ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ Π·Π° Π·Π°ΠΏΠ°Π·Π²Π°Π½Π΅ Π½Π° Π΄ΡΠΌΠΏΠΎΠ²Π΅, Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΠΈ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° Π·Π° LTO ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ, ΡΠ° ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½ΠΈ. Π’Π°ΠΊΠΈΠ²Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΡΠ΅Π³Π° Π²ΠΈΠ½Π°Π³ΠΈ ΡΠ΅ Π·Π°ΠΏΠΈΡΠ²Π°Ρ Π² ΡΠ΅ΠΊΡΡΠ°ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΎΡΠΈΡ, ΠΎΡΠ²Π΅Π½ Π°ΠΊΠΎ ΠΏΡΡΡΡ Π½Π΅ Π΅ ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½ ΠΈΠ·ΡΠΈΡΠ½ΠΎ ΡΡΠ΅Π· ΠΎΠΏΡΠΈΠΈΡΠ΅ "-dumpbase", "-dumpdir" ΠΈ "-save-temps=*".
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° Π΄Π²ΠΎΠΈΡΠ½ΠΈΡ ΡΠΎΡΠΌΠ°Ρ BRIG Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Ρ Π΅Π·ΠΈΠΊΠ° HSAIL (ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π΅Π½ Π΅Π·ΠΈΠΊ Π·Π° Ρ Π΅ΡΠ΅ΡΠΎΠ³Π΅Π½Π½Π° ΡΠΈΡΡΠ΅ΠΌΠ½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°) Π΅ ΠΎΡΡ Π²ΡΡΠ»Π΅Π½Π° ΠΈ ΡΠΊΠΎΡΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π°ΡΠ°.
- ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΠ΅ΠΆΠΈΠΌΠ° ThreadSanitizer (-fsanitize=thread) ΡΠ° ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈ Π΄Π° ΠΎΡΠΊΡΠΈΠ²Π°Ρ ΡΡΠ»ΠΎΠ²ΠΈΡ Π½Π° ΡΡΡΡΠ΅Π·Π°Π½ΠΈΠ΅ ΠΏΡΠΈ ΡΠΏΠΎΠ΄Π΅Π»ΡΠ½Π΅ Π½Π° Π΅Π΄Π½ΠΈ ΠΈ ΡΡΡΠΈ Π΄Π°Π½Π½ΠΈ ΠΎΡ ΡΠ°Π·Π»ΠΈΡΠ½ΠΈ Π½ΠΈΡΠΊΠΈ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠ½ΠΈΡΠΊΠΎΠ²ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ Π΄ΠΎΠ±Π°Π²Ρ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π°Π»ΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΈ Π²ΡΠ΅ΠΌΠ΅Π½Π° Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ ΠΈ ΡΡΠ΅Π΄ΠΈ, ΠΊΠ°ΠΊΡΠΎ ΠΈ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ° Π·Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ KCSAN (Kernel Concurrency Sanitizer), ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π·Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ ΠΎΡΠΊΡΠΈΠ²Π°Π½Π΅ Π½Π° ΡΡΠ»ΠΎΠ²ΠΈΡ Π½Π° ΡΡΡΡΠ΅Π·Π°Π½ΠΈΠ΅ Π² ΡΠ΄ΡΠΎΡΠΎ Π½Π° Linux. ΠΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠ° Π½ΠΎΠ²ΠΈ ΠΎΠΏΡΠΈΠΈ β-param tsan-distinguish-volatileβ ΠΈ β-param tsan-instrument-func-entry-exitβ.
- ΠΠΎΠΌΠ΅ΡΠ°ΡΠ° Π½Π° ΠΊΠΎΠ»ΠΎΠ½ΠΈΡΠ΅ Π² Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΡΠ½ΠΈΡΠ΅ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ Π²Π΅ΡΠ΅ ΠΎΡΡΠ°Π·ΡΠ²Π°Ρ Π½Π΅ Π±ΡΠΎΡ Π½Π° Π±Π°ΠΉΡΠΎΠ²Π΅ΡΠ΅ ΠΎΡ Π½Π°ΡΠ°Π»ΠΎΡΠΎ Π½Π° ΡΠ΅Π΄Π°, Π° Π²ΡΡΡΠ½ΠΎΡΡ Π½ΠΎΠΌΠ΅ΡΠ°ΡΠ° Π½Π° ΠΊΠΎΠ»ΠΎΠ½ΠΈΡΠ΅, ΠΊΠΎΠΈΡΠΎ ΠΎΡΡΠΈΡΠ°Ρ ΠΌΠ½ΠΎΠ³ΠΎΠ±Π°ΠΉΡΠΎΠ²ΠΈ Π·Π½Π°ΡΠΈ ΠΈ Π·Π½Π°ΡΠΈ, Π·Π°Π΅ΠΌΠ°ΡΠΈ Π½ΡΠΊΠΎΠ»ΠΊΠΎ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ Π² ΡΠ΅Π΄Π° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Π·Π½Π°ΠΊΡΡ π Π·Π°Π΅ΠΌΠ° Π΄Π²Π΅ ΠΏΠΎΠ·ΠΈΡΠΈΠΈ ΠΈ Π΅ ΠΊΠΎΠ΄ΠΈΡΠ°Π½ Π² 4 Π±Π°ΠΉΡΠ°). ΠΠΎ ΡΡΡΠΈΡ Π½Π°ΡΠΈΠ½ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈΡΠ΅ Π·Π° ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅ Π²Π΅ΡΠ΅ ΡΠ΅ ΡΡΠ΅ΡΠΈΡΠ°Ρ ΠΊΠ°ΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ Π±ΡΠΎΠΉ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΈ (ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠΈΡΠ° ΡΡΠ΅Π· ΠΎΠΏΡΠΈΡΡΠ° -ftabstop, ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ 8). ΠΠ° Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΎΡΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΠΎΠΏΡΠΈΡΡΠ° β-fdiagnostics-column-unit=byteβ, Π° Π·Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½Π°ΡΠ° ΡΡΠΎΠΉΠ½ΠΎΡΡ (Π½ΠΎΠΌΠ΅ΡΠΈΡΠ°Π½Π΅ ΠΎΡ 0 ΠΈΠ»ΠΈ 1) - ΠΎΠΏΡΠΈΡΡΠ° β-fdiagnostics-column-origin=β.
- ΠΠ΅ΠΊΡΠΎΡΠΈΠ·Π°ΡΠΎΡΡΡ Π²Π·Π΅ΠΌΠ° ΠΏΠΎΠ΄ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΡΠ»ΠΎΡΠΎ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΡΡΠ° ΠΈ Π΄ΠΎΠ±Π°Π²Ρ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΏΡΠ΅ΡΠΈΡΠ°Π½ΠΈΡ ΠΈ ΠΏΡΠ΅ΠΏΡΠ°ΡΠΊΠΈ ΠΊΡΠΌ ΠΏΡΠ΅Π΄ΠΈΡΠ½ΠΈ Π±Π»ΠΎΠΊΠΎΠ²Π΅ Π² Π³ΡΠ°ΡΠΈΠΊΠ°ΡΠ° Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊ (CFG, Π³ΡΠ°ΡΠΈΠΊΠ° Π½Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Π½ΠΈΡ ΠΏΠΎΡΠΎΠΊ).
- ΠΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ° ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡΠ° Π΄Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π° ΡΠ΅ΡΠΈΡ ΠΎΡ ΡΡΠ»ΠΎΠ²Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΡΠ°Π²Π½ΡΠ²Π°Ρ Π΅Π΄Π½Π° ΠΈ ΡΡΡΠ° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π² ΠΈΠ·ΡΠ°Π· Π·Π° ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅. ΠΠ·ΡΠ°Π·ΡΡ Π·Π° ΠΏΡΠ΅Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ ΠΌΠΎΠΆΠ΅ ΠΏΠΎ-ΠΊΡΡΠ½ΠΎ Π΄Π° Π±ΡΠ΄Π΅ ΠΊΠΎΠ΄ΠΈΡΠ°Π½ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π·Π° Π±ΠΈΡΠΎΠ²ΠΎ ΡΠ΅ΡΡΠ²Π°Π½Π΅ (ΠΎΠΏΡΠΈΡΡΠ° β-fbit-testsβ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ» Π½Π° ΡΠ°ΠΊΠΎΠ²Π° ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½Π΅).
- ΠΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈ ΠΌΠ΅ΠΆΠ΄ΡΠΏΡΠΎΡΠ΅Π΄ΡΡΠ½ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ. ΠΠΎΠ±Π°Π²Π΅Π½ Π΅ Π½ΠΎΠ² IPA-modref ΠΏΡΠΎΠΏΡΡΠΊ (-fipa-modref) Π·Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° ΡΡΡΠ°Π½ΠΈΡΠ½ΠΈΡΠ΅ Π΅ΡΠ΅ΠΊΡΠΈ ΠΏΡΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠΎΡΠ½ΠΎΡΡΡΠ° Π½Π° Π°Π½Π°Π»ΠΈΠ·Π°. ΠΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° ΠΏΡΠΎΠΏΡΡΠΊΠ° IPA-ICF (-fipa-icf), ΠΊΠΎΡΡΠΎ Π½Π°ΠΌΠ°Π»ΡΠ²Π° ΠΏΠΎΡΡΠ΅Π±Π»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ ΠΈ ΡΠ²Π΅Π»ΠΈΡΠ°Π²Π° Π±ΡΠΎΡ Π½Π° ΡΠ½ΠΈΡΠΈΡΠΈΡΠ°Π½ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π·Π° ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡΠ°Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΈ Π±Π»ΠΎΠΊΠΎΠ²Π΅ ΠΊΠΎΠ΄. Π ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π°Π½Π΅ΡΠΎ IPA-CP (ΠΠ΅ΠΆΠ΄ΡΠΏΡΠΎΡΠ΅Π΄ΡΡΠ½ΠΎ ΠΏΠΎΡΡΠΎΡΠ½Π½ΠΎ ΡΠ°Π·ΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅) Π΅Π²ΡΠΈΡΡΠΈΠΊΠ°ΡΠ° Π·Π° ΠΏΡΠΎΠ³Π½ΠΎΠ·ΠΈΡΠ°Π½Π΅ Π΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π°, ΠΊΠ°ΡΠΎ ΡΠ΅ Π²Π·Π΅ΠΌΠ°Ρ ΠΏΡΠ΅Π΄Π²ΠΈΠ΄ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΈΡΠ΅ Π³ΡΠ°Π½ΠΈΡΠΈ ΠΈ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠΈ Π½Π° ΡΠΈΠΊΠ»ΠΈΡΠ΅.
- Π ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ (LTO) ΡΠΎΡΠΌΠ°ΡΡΡ Π½Π° Π±Π°ΠΉΡ ΠΊΠΎΠ΄Π° Π΅ ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ°Π½ Π·Π° Π½Π°ΠΌΠ°Π»ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π·ΠΌΠ΅ΡΠ° ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠΊΠΎΡΠΎΡΡΡΠ° Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ°. ΠΠ°ΠΌΠ°Π»Π΅Π½Π° ΠΏΠΈΠΊΠΎΠ²Π° ΠΊΠΎΠ½ΡΡΠΌΠ°ΡΠΈΡ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π·Π°ΡΠ° Π½Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅.
- Π ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° Π·Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ, Π±Π°Π·ΠΈΡΠ°Π½ Π½Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈΡΠ΅ ΠΎΡ ΠΏΡΠΎΡΠΈΠ»ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠ΄Π° (PGO - Profile-guided optimization), ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠΎ-ΠΎΠΏΡΠΈΠΌΠ°Π»Π΅Π½ ΠΊΠΎΠ΄ Π²ΡΠ· ΠΎΡΠ½ΠΎΠ²Π° Π½Π° Π°Π½Π°Π»ΠΈΠ· Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅, ΡΠ°Π·ΠΌΠ΅ΡΡΡ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ΡΠ΅ Ρ GCOV Π΄Π°Π½Π½ΠΈ Π΅ Π½Π°ΠΌΠ°Π»Π΅Π½ ΠΏΠΎΡΠ°Π΄ΠΈ ΠΏΠΎ-ΠΊΠΎΠΌΠΏΠ°ΠΊΡΠ½ΠΎ ΠΎΠΏΠ°ΠΊΠΎΠ²Π°Π½Π΅ Π½Π° Π½ΡΠ»Π΅Π²ΠΈ Π±ΡΠΎΡΡΠΈ . ΠΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ ΡΠ΅ΠΆΠΈΠΌ "-fprofile-values" ΡΡΠ΅Π· ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΠΎΠ²Π΅ΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ ΠΏΡΠΈ ΠΈΠ½Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΈ ΠΏΠΎΠ²ΠΈΠΊΠ²Π°Π½ΠΈΡ.
- ΠΠ½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ° OpenMP 5.0 (Open Multi-Processing), ΠΊΠΎΠΉΡΠΎ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ° API ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈΡΠ΅ Π·Π° ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π·Π° ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΡΠ΄ΡΠ΅Π½ΠΈ ΠΈ Ρ ΠΈΠ±ΡΠΈΠ΄Π½ΠΈ (CPU+GPU/DSP) ΡΠΈΡΡΠ΅ΠΌΠΈ ΡΡΡ ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½Π° ΠΏΠ°ΠΌΠ΅Ρ ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡΠΈ Π·Π° Π²Π΅ΠΊΡΠΎΡΠΈΠ·Π°ΡΠΈΡ (SIMD), ΠΈΠΌΠ° ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠΈ. ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΡΠ° Π·Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Ρ Π΅ΡΠ΅ΡΠΎΠ³Π΅Π½Π½ΠΈ ΡΠΈΠΊΠ»ΠΈ Π² OpenMP ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ. Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°ΡΠ° Π½Π° ΡΡΠ΅Π΄Π°ΡΠ° OMP_TARGET_OFFLOAD.
- Π Π΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° Π·Π° ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ OpenACC 2.6, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½Π° Π·Π° Π΅Π·ΠΈΡΠΈΡΠ΅ C, C++ ΠΈ Fortran, Π΅ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π°, ΠΊΠΎΠ΅ΡΠΎ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ° ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΡΠ°Π·ΡΠΎΠ²Π°ΡΠ²Π°ΡΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π° GPU ΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ, ΠΊΠ°ΡΠΎ NVIDIA PTX.
- ΠΠ° Π΅Π·ΠΈΡΠΈΡΠ΅ C Π΅ Π²Π½Π΅Π΄ΡΠ΅Π½ Π½ΠΎΠ² Π°ΡΡΠΈΠ±ΡΡ βno_stack_protectorβ, ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π° ΠΌΠ°ΡΠΊΠΈΡΠ° ΡΡΠ½ΠΊΡΠΈΠΈ, Π·Π° ΠΊΠΎΠΈΡΠΎ Π·Π°ΡΠΈΡΠ°ΡΠ° Π½Π° ΡΡΠ΅ΠΊΠ° Π½Π΅ ΡΡΡΠ±Π²Π° Π΄Π° Π±ΡΠ΄Π΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π° (β-fstack-protectorβ). ΠΡΡΠΈΠ±ΡΡΡΡ βmallocβ Π΅ ΡΠ°Π·ΡΠΈΡΠ΅Π½, Π·Π° Π΄Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π΄Π²ΠΎΠΉΠΊΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ Π·Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ (ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΠ΅Π»/ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π°Π½Π΅), ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² ΡΡΠ°ΡΠΈΡΠ½ΠΈΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ Π·Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠΈΠΏΠΈΡΠ½ΠΈ Π³ΡΠ΅ΡΠΊΠΈ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ° Ρ ΠΏΠ°ΠΌΠ΅Ρ (ΠΈΠ·ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ ΡΠ»Π΅Π΄ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π°Π½Π΅, Π΄Π²ΠΎΠΉΠ½ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ ΠΊΡΠΌ Π±Π΅Π·ΠΏΠ»Π°ΡΠ½Π°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡ ΠΈ Ρ.Π½.) ΠΈ Π² ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡΡΠ° Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ° β-Wmismatched-deallocβ, β-Wmismatched-new-deleteβ ΠΈ β-Wfree-nonheap-objectβ, ΠΈΠ½ΡΠΎΡΠΌΠΈΡΠ°ΠΉΠΊΠΈ Π·Π° Π½Π΅ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ Π·Π° ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ ΠΈ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ.
- ΠΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠ° Π½ΠΎΠ²ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ Π·Π° Π΅Π·ΠΈΠΊΠ° C:
- β-Wmismatched-deallocβ (ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅) β ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π°Π²Π° Π·Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π° ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ, ΠΊΠΎΠΈΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π», ΠΊΠΎΠΉΡΠΎ Π½Π΅ Π΅ ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌ Ρ ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ Π·Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ.
- β-Wsizeof-array-divβ (Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ΠΎ, ΠΊΠΎΠ³Π°ΡΠΎ Π΅ ΠΏΠΎΡΠΎΡΠ΅Π½ΠΎ β-Wallβ) β ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π°Π²Π° Π·Π° ΡΠ°Π·Π΄Π΅Π»ΡΠ½Π΅ΡΠΎ Π½Π° Π΄Π²Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° sizeof, Π°ΠΊΠΎ Π΄Π΅Π»ΠΈΡΠ΅Π»ΡΡ Π½Π΅ ΡΡΠ²ΠΏΠ°Π΄Π° Ρ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½ΡΠ° Π½Π° ΠΌΠ°ΡΠΈΠ²Π°.
- β-Wstringop-overreadβ (ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅) β ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π°Π²Π° Π·Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΡ Π·Π° Π½ΠΈΠ·, ΠΊΠΎΡΡΠΎ ΡΠ΅ΡΠ΅ Π΄Π°Π½Π½ΠΈ ΠΎΡ ΠΎΠ±Π»Π°ΡΡ ΠΈΠ·Π²ΡΠ½ Π³ΡΠ°Π½ΠΈΡΠ°ΡΠ° Π½Π° ΠΌΠ°ΡΠΈΠ²Π°.
- β-Wtsanβ (Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ΠΎ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅) β ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π°Π²Π° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ (ΠΊΠ°ΡΠΎ std::atomic_thread_fence), ΠΊΠΎΠΈΡΠΎ Π½Π΅ ΡΠ΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ Π² ThreadSanitizer.
- β-Warray-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡβ ΠΈ β-Wvla-ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡβ (Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ΠΈ ΠΏΡΠΈ ΡΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° β-Wallβ) - ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π°Π²Π° Π·Π° ΠΎΡΠΌΡΠ½Π° Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ Ρ Π½Π΅ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΈ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠΈ Π½Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΌΠ°ΡΠΈΠ²ΠΈ Ρ ΡΠΈΠΊΡΠΈΡΠ°Π½Π° ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π΄ΡΠ»ΠΆΠΈΠ½Π°.
- ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ΡΠΎ "-Wuninitialized" Π²Π΅ΡΠ΅ ΠΎΡΠΊΡΠΈΠ²Π° ΠΎΠΏΠΈΡΠΈ Π·Π° ΡΠ΅ΡΠ΅Π½Π΅ ΠΎΡ Π½Π΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π° ΠΏΠ°ΠΌΠ΅Ρ.
- ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ΡΠΎ "-Wfree-nonheap-object" ΡΠ°Π·ΡΠΈΡΡΠ²Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΡΡΠ° Π½Π° ΡΠ»ΡΡΠ°ΠΈΡΠ΅, ΠΊΠΎΠ³Π°ΡΠΎ ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ Π·Π° ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ ΡΠ΅ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Ρ Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π», ΠΊΠΎΠΉΡΠΎ Π½Π΅ Π΅ ΠΏΠΎΠ»ΡΡΠ΅Π½ ΡΡΠ΅Π· ΡΡΠ½ΠΊΡΠΈΠΈ Π·Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ.
- ΠΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ΡΠΎ "-Wmaybe-uninitialized" ΡΠ°Π·ΡΠΈΡΠΈ ΠΎΡΠΊΡΠΈΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΊΡΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΎΡΠ½Π°ΡΡΡ Π΄ΠΎ Π½Π΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΠΌΠ΅ΡΡΠ° Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ°.
- ΠΠ° Π΅Π·ΠΈΠΊΠ° C ΡΠ° Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈ ΡΠ°ΡΡ ΠΎΡ Π½ΠΎΠ²ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ΅Π½ΠΈ Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ° C2X (Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ΠΈ ΡΡΠ΅Π· ΡΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° -std=c2x ΠΈ -std=gnu2x): ΠΌΠ°ΠΊΡΠΎΡΠΈ BOOL_MAX ΠΈ BOOL_WIDTH, Π½Π΅Π·Π°Π΄ΡΠ»ΠΆΠΈΡΠ΅Π»Π½Π° ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΈΡ Π½Π° ΠΈΠΌΠ΅Π½Π°ΡΠ° Π½Π° Π½Π΅ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈΡΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π² Π΄Π΅ΡΠΈΠ½ΠΈΡΠΈΠΈ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ (ΠΊΠ°ΠΊΡΠΎ Π² C++), Π°ΡΡΠΈΠ±ΡΡ β[ [nodiscard]]β, ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π½Π° ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΠΎΡ "__has_c_attribute", ΠΌΠ°ΠΊΡΠΎΡΠΈ FLT_IS_IEC_60559, DBL_IS_IEC_60559, LDBL_IS_IEC_60559, __STDC_WANT_IEC_60559_EXT__, INFINITY, NAN, FLT_SNAN, DBL_SNAN , LDBL_SNAN, DEC_INFINITY ΠΈ DEC _NAN, NaN=ΠΌΠ°ΠΊΡΠΎΡΠΈ Π·Π° FloatN, _FloatNx ΠΈ _DecimalN, Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΡΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° Π·Π½Π°ΡΠΈ Π·Π° ΠΏΡΠ΅ΡΠΊΠ°ΡΠ°Π½Π΅ ΠΏΡΠ΅Π΄ΠΈ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠΈ ΠΈ Π² ΠΊΡΠ°Ρ Π½Π° ΡΡΡΡΠ°Π²Π½ΠΈ ΠΈΠ·ΡΠ°Π·ΠΈ.
- ΠΠ° C++ ΡΠ° Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈ ΡΠ°ΡΡ ΠΎΡ ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅ ΠΈ Π½ΠΎΠ²ΠΎΠ²ΡΠ²Π΅Π΄Π΅Π½ΠΈΡΡΠ°, ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ° C++20, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ βconsteval virtualβ, ΠΏΡΠ΅Π²Π΄ΠΎΠ΄Π΅ΡΡΡΡΠΊΡΠΎΡΠΈ Π·Π° ΠΊΡΠ°Ρ Π½Π° ΠΆΠΈΠ·Π½Π΅Π½ΠΈΡ ΡΠΈΠΊΡΠ» Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° enum ΠΊΠ»Π°Ρ ΠΈ ΠΈΠ·ΡΠΈΡΠ»ΡΠ²Π°Π½Π΅ Π½Π° ΡΠ°Π·ΠΌΠ΅ΡΠ° Π½Π° ΠΌΠ°ΡΠΈΠ² Π² βΠ½ΠΎΠ²ΠΈΡβ ΠΈΠ·ΡΠ°Π·.
- ΠΠ° C++ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π½ΡΠΊΠΎΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ, ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ²Π°Ρ Π·Π° Π±ΡΠ΄Π΅ΡΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡ C++23 (-std=c++23, -std=gnu++23, -std=c++2b, -std=gnu ++2Π±). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, Π²Π΅ΡΠ΅ ΠΈΠΌΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π»ΠΈΡΠ΅ΡΠ°Π»Π½ΠΈΡ ΡΡΡΠΈΠΊΡ βzuβ Π·Π° ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ size_t ΡΡΡ Π·Π½Π°ΠΊ.
- libstdc++ ΠΈΠΌΠ° ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ° C++17, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π²ΡΠ²Π΅ΠΆΠ΄Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π° std::from_chars ΠΈ std::to_chars Π·Π° ΡΠΈΠΏΠΎΠ²Π΅ Ρ ΠΏΠ»Π°Π²Π°ΡΠ° Π·Π°ΠΏΠ΅ΡΠ°Ρ. ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈ ΡΠ° Π½ΠΎΠ²ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ° C++20, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ std::bit_cast, std::source_location, Π°ΡΠΎΠΌΠ°ΡΠ½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΡΠ°ΠΊΠ°Π½Π΅ ΠΈ ΡΠ²Π΅Π΄ΠΎΠΌΡΠ²Π°Π½Π΅, , , , , ΠΊΠ°ΠΊΡΠΎ ΠΈ Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈ Π½Π° Π±ΡΠ΄Π΅ΡΠΈΡ C++ ΡΡΠ°Π½Π΄Π°ΡΡ 23 (std::to_underlying, std::is_scoped_enum). ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΡΠΈΠΏΠΎΠ²Π΅ Π·Π° ΠΏΠ°ΡΠ°Π»Π΅Π»Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π΄Π°Π½Π½ΠΈ (SIMD, Data-Parallel Types). ΠΠ½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° std::uniform_int_distribution Π΅ ΡΡΠΊΠΎΡΠ΅Π½ΠΎ.
- ΠΡΠ΅ΠΌΠ°Ρ Π½Π°ΡΠΎ Π΅ Π·Π½Π°ΠΌΠ΅ΡΠΎ Π·Π° Π°Π»ΡΠ° ΠΊΠ°ΡΠ΅ΡΡΠ²ΠΎ ΠΎΡ libgccjit, ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Π·Π° Π²Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡ Π½Π° ΠΊΠΎΠ΄ Π² Π΄ΡΡΠ³ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΈ ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ ΠΌΡ Π·Π° ΠΎΡΠ³Π°Π½ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ Π½Π° Π±Π°ΠΉΡ ΠΊΠΎΠ΄ Π² ΠΌΠ°ΡΠΈΠ½Π΅Π½ ΠΊΠΎΠ΄. ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° libgccjit Π·Π° MinGW.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° 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), ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΡΠ°ΠΌΠΎ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° AArch64.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Armv8.3-a (AArch64/AArch32), SVE (AArch64), SVE2 (AArch64) ΠΈ MVE (AArch32 M-ΠΏΡΠΎΡΠΈΠ») SIMD ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π·Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ½ΠΎ Π²Π΅ΠΊΡΠΎΡΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ, ΠΈΠ·Π²ΡΡΡΠ²Π°ΡΠΈ ΡΡΠ±ΠΈΡΠ°Π½Π΅, ΠΈΠ·Π²Π°ΠΆΠ΄Π°Π½Π΅, ΡΠΌΠ½ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈ Π²Π°ΡΠΈΠ°Π½ΡΠΈ Π½Π° Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅/ΠΈΠ·Π²Π°ΠΆΠ΄Π°Π½Π΅ ΠΏΡΠ΅Π· ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΠΈ ΡΠΈΡΠ»Π°. ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π°Π²ΡΠΎΠ²Π΅ΠΊΡΠΎΡΠΈΠ·Π°ΡΠΈΡ Π·Π° ARM Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π½Π°Π±ΠΎΡΠ° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ MVE.
- ΠΠ° ARM ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ ΡΠ΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Ρ ΠΏΡΠ»Π΅Π½ Π½Π°Π±ΠΎΡ ΠΎΡ ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°Π½ΠΈ Π² ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ° C ΡΡΠ½ΠΊΡΠΈΠΈ (Intrinsics), Π·Π°ΠΌΠ΅Π½Π΅Π½ΠΈ ΠΎΡ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈ Π²Π΅ΠΊΡΠΎΡΠ½ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ (SIMD), ΠΏΠΎΠΊΡΠΈΠ²Π°ΡΠΈ Π²ΡΠΈΡΠΊΠΈ NEON ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠ°Π½ΠΈ Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° Π½Π° ACLE Q3 2020.
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π·Π° gfx908 GPU Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΊΡΠΌ Π±Π΅ΠΊΠ΅Π½Π΄Π° Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ΄ Π·Π° AMD GPU, Π±Π°Π·ΠΈΡΠ°Π½ Π½Π° ΠΌΠΈΠΊΡΠΎΠ°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° GCN.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π½ΠΎΠ²ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ ΠΈ Π½ΠΎΠ²ΠΈ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ Π·Π° Π½Π°Π±ΠΎΡ ΠΎΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈ Π² ΡΡΡ
:
- Intel Sapphire Rapids (-march=sapphirerapids, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈΡΠ΅ MOVDIRI, MOVDIR64B, AVX512VP2INTERSECT, ENQCMD, CLDEMOTE, SERIALIZE, PTWRITE, WAITPKG, TSXLDTRK, AMT-TILE, AMX-INT8, AMX-BF16 ΠΈ AVX-VNNI.
- Intel Alderlake (-march=alderlake, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ CLDEMOTE, PTWRITE, WAITPKG, SERIALIZE, KEYLOCKER, AVX-VNNI ΠΈ HRESET).
- Intel Rocketlake (-march=rocketlake, ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ Π½Π° Rocket Lake Π±Π΅Π· ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° SGX).
- AMD Zen 3 (-march=znver3).
- ΠΠ° ΡΠΈΡΡΠ΅ΠΌΠΈ IA-32/x86-64, Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ Intel, Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π½ΠΎΠ²ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ½ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ TSXLDTRK, SERIALIZE, HRESET, UINTRKEYLOCKER, AMX-TILE, AMX-INT8, AMX-BF16, AVX-VNNI.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΡΠ»Π°Π³ΠΎΠ²Π΅ "-march=x86-64-v[234]" Π·Π° ΠΈΠ·Π±ΠΎΡ Π½Π° Π½ΠΈΠ²Π° Π½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° x86-64 (v2 - ΠΎΠ±Ρ Π²Π°ΡΠ° SSE4.2, SSSE3, POPCNT ΠΈ CMPXCHG16B ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ; v3 - AVX2 ΠΈ MOVBE; v4 - AVX-512 ) .
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° RISC-V ΡΠΈΡΡΠ΅ΠΌΠΈ Ρ ΠΏΠΎΠ΄ΡΠ΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π±Π°ΠΉΡΠΎΠ²Π΅ΡΠ΅ Ρ Π³ΠΎΠ»ΡΠΌ ΡΠ΅Π΄. ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΎΠΏΡΠΈΡ "-misa-spec=*" Π·Π° ΠΈΠ·Π±ΠΎΡ Π½Π° Π²Π΅ΡΡΠΈΡΡΠ° Π½Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° Π½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° Π½Π° Π½Π°Π±ΠΎΡΠ° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ RISC-V. ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° AddressSanitizer ΠΈ Π·Π°ΡΠΈΡΠ° Π½Π° ΡΡΠ΅ΠΊΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° canary ΡΠ°Π³ΠΎΠ²Π΅.
- ΠΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π°ΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅ΠΆΠΈΠΌΠ° Π·Π° ΡΡΠ°ΡΠΈΡΠ΅Π½ Π°Π½Π°Π»ΠΈΠ· β-fanalyzerβ, ΠΊΠΎΠΉΡΠΎ ΠΈΠ·Π²ΡΡΡΠ²Π° ΡΠ΅ΡΡΡΡΠΎΠ΅ΠΌΡΠΊ ΠΌΠ΅ΠΆΠ΄ΡΠΏΡΠΎΡΠ΅Π΄ΡΡΠ΅Π½ Π°Π½Π°Π»ΠΈΠ· Π½Π° ΠΏΡΡΠΈΡΠ°ΡΠ° Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠ΄Π° ΠΈ ΠΏΠΎΡΠΎΡΠΈΡΠ΅ ΠΎΡ Π΄Π°Π½Π½ΠΈ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ°. Π Π΅ΠΆΠΈΠΌΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΎΡΠΊΡΠΈΠ²Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Π½Π° Π΅ΡΠ°ΠΏΠ° Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ, ΠΊΠ°ΡΠΎ Π΄Π²ΠΎΠΉΠ½ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ Π½Π° ΡΡΠ½ΠΊΡΠΈΡΡΠ° free() Π·Π° Π΅Π΄Π½Π° ΠΎΠ±Π»Π°ΡΡ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ°, ΠΈΠ·ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°ΠΉΠ»ΠΎΠ²ΠΈ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΈ, Π΄Π΅ΡΠ΅ΡΠ΅ΡΠΈΡΠ°Π½Π΅ ΠΈ ΠΏΡΠ΅Π΄Π°Π²Π°Π½Π΅ Π½Π° Π½ΡΠ»Π΅Π²ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ, Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ ΠΎΡΠ²ΠΎΠ±ΠΎΠ΄Π΅Π½ΠΈ Π±Π»ΠΎΠΊΠΎΠ²Π΅ ΠΏΠ°ΠΌΠ΅Ρ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π½Π΅ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ ΠΈ Ρ.Π½. Π Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ:
- ΠΠΎΠ΄ΡΡ Π·Π° ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° ΡΡΡΡΠΎΡΠ½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ° Π΅ Π½Π°ΠΏΡΠ»Π½ΠΎ ΠΏΡΠ΅Π½Π°ΠΏΠΈΡΠ°Π½. ΠΡΠΎΠ±Π»Π΅ΠΌΠΈΡΠ΅ ΡΡΡ ΡΠΊΠ°Π½ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈ C ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ ΡΠ° ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈ.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° C++.
- ΠΠ½Π°Π»ΠΈΠ·ΡΡ Π½Π° ΡΠ°Π·ΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΡΠΎ ΠΈ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π΅ Π°Π±ΡΡΡΠ°Ρ ΠΈΡΠ°Π½ ΠΎΡ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ malloc ΠΈ free ΠΈ ΡΠ΅Π³Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° new/delete ΠΈ new[]/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 (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ Π΅ ΠΏΠ»ΡΠ³ΠΈΠ½ Π·Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎΡΠΎ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° Π³Π»ΠΎΠ±Π°Π»Π½ΠΎ Π·Π°ΠΊΠ»ΡΡΠ²Π°Π½Π΅ (GIL) Π² CPython).
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru