Π‘Π»Π΅Π΄ Π³ΠΎΠ΄ΠΈΠ½Π° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π±Π΅ΡΠ΅ ΠΏΡΡΠ½Π°ΡΠ° Π²Π΅ΡΡΠΈΡΡΠ° Π½Π° Π±Π΅Π·ΠΏΠ»Π°ΡΠ½ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ GCC 13.1, ΠΏΡΡΠ²Π°ΡΠ° Π·Π½Π°ΡΠΈΠΌΠ° Π²Π΅ΡΡΠΈΡ Π² Π½ΠΎΠ²ΠΈΡ ΠΊΠ»ΠΎΠ½ Π½Π° GCC 13.x. Π‘ΡΠ³Π»Π°ΡΠ½ΠΎ Π½ΠΎΠ²Π°ΡΠ° ΡΡ Π΅ΠΌΠ° Π·Π° Π½ΠΎΠΌΠ΅ΡΠΈΡΠ°Π½Π΅ Π½Π° Π²Π΅ΡΡΠΈΠΈΡΠ΅, Π²Π΅ΡΡΠΈΡ 13.0 Π±Π΅ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°ΡΠ° ΠΈ ΠΌΠ°Π»ΠΊΠΎ ΠΏΡΠ΅Π΄ΠΈ ΠΏΡΡΠΊΠ°Π½Π΅ΡΠΎ Π½Π° GCC 13.1, ΠΊΠ»ΠΎΠ½ΡΡ GCC 14.0 Π²Π΅ΡΠ΅ Π±Π΅ΡΠ΅ ΡΠ°Π·Π΄Π²ΠΎΠ΅Π½, ΠΎΡ ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ ΡΠΎΡΠΌΠΈΡΠ°Π½Π° ΡΠ»Π΅Π΄Π²Π°ΡΠ°ΡΠ° Π·Π½Π°ΡΠΈΠΌΠ° Π²Π΅ΡΡΠΈΡ Π½Π° GCC 14.1.
ΠΡΠ½ΠΎΠ²Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ:
- GCC ΠΏΡΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ Π½Π° Π΅Π·ΠΈΠΊΠ° Π·Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ Modula-2. Π’ΠΎΠΉ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΠΊΠΎΠ΄ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅, ΠΊΠΎΠΉΡΠΎ ΠΎΡΠ³ΠΎΠ²Π°ΡΡ Π½Π° Π΄ΠΈΠ°Π»Π΅ΠΊΡΠΈΡΠ΅ PIM2, PIM3 ΠΈ PIM4, ΠΊΠ°ΠΊΡΠΎ ΠΈ Π½Π° ΠΏΡΠΈΠ΅ΡΠΈΡ ISO ΡΡΠ°Π½Π΄Π°ΡΡ Π·Π° ΡΠΎΠ·ΠΈ Π΅Π·ΠΈΠΊ.
- Π€ΡΠΎΠ½ΡΠ΅Π½Π΄ Ρ Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ Π½Π° Π΅Π·ΠΈΠΊΠΎΠ²ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ Rust, ΠΏΠΎΠ΄Π³ΠΎΡΠ²Π΅Π½ ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° gccrs (GCC Rust), Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ ΠΊΡΠΌ Π΄ΡΡΠ²ΠΎΡΠΎ Π½Π° ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠ΄ Π½Π° GCC. Π ΡΠ΅ΠΊΡΡΠΈΡ ΠΈΠ·Π³Π»Π΅Π΄ forntend Π΅ ΠΌΠ°ΡΠΊΠΈΡΠ°Π½ ΠΊΠ°ΡΠΎ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π΅Π½ ΠΈ Π΄Π΅Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅. Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΡΡ Π΅ Π³ΠΎΡΠΎΠ² (ΠΎΡΠ°ΠΊΠ²Π° ΡΠ΅ Π² ΡΠ»Π΅Π΄Π²Π°ΡΠΎΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅), ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΈΡΡ GCC ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ Π½Π° Rust ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ, Π±Π΅Π· Π΄Π° Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π΄Π° ΠΈΠ½ΡΡΠ°Π»ΠΈΡΠ°ΡΠ΅ rustc ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ°, ΡΡΠ·Π΄Π°Π΄Π΅Π½ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π½Π° LLVM.
- Link-in-Step Optimization (LTO) Π΄ΠΎΠ±Π°Π²Ρ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΡΡΡΠ²ΡΡ Π·Π° ΡΠ°Π±ΠΎΡΠ° (jobserver), ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½ ΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° GNU make, Π·Π° Π΄Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·ΠΈΡΠ° ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎΡΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ Π² ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ Π½ΠΈΡΠΊΠΈ. Π GCC ΡΡΡΠ²ΡΡΡΡ Π·Π° ΡΠ°Π±ΠΎΡΠ° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΏΠ°ΡΠ°Π»Π΅Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° LTO ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ° Π½Π° ΡΡΠ»Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ° (WPA, Π°Π½Π°Π»ΠΈΠ· Π½Π° ΡΡΠ»Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°). ΠΠ°ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½ΠΈΡΠ΅ ΠΊΠ°Π½Π°Π»ΠΈ (--jobserver-style=fifo) ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π·Π° ΠΊΠΎΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΡ ΡΡΡ ΡΡΡΠ²ΡΡΠ° Π·Π° ΡΠ°Π±ΠΎΡΠ°.
- Π‘ΡΠ°ΡΠΈΡΠ½ΠΈΡΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ (-fanalyzer) ΠΏΡΠ΅Π΄Π»Π°Π³Π° 20 Π½ΠΎΠ²ΠΈ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΡΠ½ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ "-Wanalyzer-out-of-bounds", "-Wanalyzer-allocation-size", "-Wanalyzer-deref-before-check", "-Wanalyzer- infinite -ΡΠ΅ΠΊΡΡΡΠΈΡ" -Wanalyzer-jump-through-null", "-Wanalyzer-va-list-leak".
- ΠΡΠ²Π΅Π΄Π΅Π½Π° Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ° Π²ΡΠ² ΡΠΎΡΠΌΠ°Ρ SARIF, Π±Π°Π·ΠΈΡΠ°Π½ Π½Π° JSON. ΠΠΎΠ²ΠΈΡΡ ΡΠΎΡΠΌΠ°Ρ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΡΠ΅Π·ΡΠ»ΡΠ°ΡΠΈ ΠΎΡ ΡΡΠ°ΡΠΈΡΠ΅Π½ Π°Π½Π°Π»ΠΈΠ· (GCC -fanalyzer), ΠΊΠ°ΠΊΡΠΎ ΠΈ Π·Π° ΠΏΠΎΠ»ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ ΠΈ Π³ΡΠ΅ΡΠΊΠΈ. ΠΠΊΡΠΈΠ²ΠΈΡΠ°Π½Π΅ΡΠΎ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° Ρ ΠΎΠΏΡΠΈΡΡΠ° β-fdiagnostics-format=sarif-stderr|sarif-file|json-stderr|json|json-fileβ, ΠΊΡΠ΄Π΅ΡΠΎ ΠΎΠΏΡΠΈΠΈΡΠ΅ Ρ βjsonβ Π²ΠΎΠ΄ΡΡ Π΄ΠΎ ΠΈΠ·Ρ ΠΎΠ΄ Π² GCC-ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ΅Π½ Π²Π°ΡΠΈΠ°Π½Ρ Π½Π° JSON ΡΠΎΡΠΌΠ°Ρ .
- ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈ ΡΠ° Π½ΡΠΊΠΎΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½ΠΈ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ° C23 C, ΠΊΠ°ΡΠΎ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°ΡΠ° nullptr Π·Π° Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π΅ Π½Π° Π½ΡΠ»Π΅Π²ΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ, ΠΊΠΎΠ΅ΡΠΎ ΡΠ»Π΅ΡΠ½ΡΠ²Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠΏΠΈΡΡΡΠΈ Ρ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ² Π±ΡΠΎΠΉ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ (ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ), ΡΠ°Π·ΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° enums, Π°ΡΡΠΈΠ±ΡΡΠ° noreturn, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° constexpr ΠΈ auto ΠΏΡΠΈ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΠ±Π΅ΠΊΡΠΈ, typeof ΠΈ typeof_unqual, Π½ΠΎΠ²ΠΈ ΠΊΠ»ΡΡΠΎΠ²ΠΈ Π΄ΡΠΌΠΈ alignas, alignof, bool, false, static_assert, thread_local ΠΈ true, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠΈ ΠΏΡΠ°Π·Π½ΠΈ ΡΠΊΠΎΠ±ΠΈ ΠΏΡΠΈ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ.
- ΠΠ½Π΅Π΄ΡΠ΅Π½ΠΈ ΡΠ° Π½ΡΠΊΠΎΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ, Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½ΠΈ Π² ΡΡΠ°Π½Π΄Π°ΡΡΠ° C++23, ΠΊΠ°ΡΠΎ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΏΠΎΡΡΠ°Π²ΡΠ½Π΅ Π½Π° ΠΌΠ°ΡΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π² ΠΊΡΠ°Ρ Π½Π° ΡΡΡΡΠ°Π²Π½ΠΈ ΠΈΠ·ΡΠ°Π·ΠΈ, ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ Ρ ΡΠΈΠΏΠ° char8_t, Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΡΠ° Π·Π° ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΠΎΡ #warning, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½Π° ΠΎΡ (\u{}, \o{} , \x{}) ΠΈ Π½Π°ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½ΠΈ ('\N{ΠΠΠ’ΠΠΠΠ¦Π ΠΠΠΠΠΠ ΠΠ£ΠΠΠ A}') ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡΠΈ Π·Π° Π΅ΠΊΡΠ°Π½ΠΈΡΠ°Π½Π΅, ΡΡΠ°ΡΠΈΡΠ΅Π½ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ(), ΡΡΠ°ΡΠΈΡΠ΅Π½ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ[], ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ Π·Π° ΡΠ°Π²Π΅Π½ΡΡΠ²ΠΎ Π² ΡΠ°ΠΌΠΊΠΈΡΠ΅ Π½Π° ΠΈΠ·ΡΠ°Π·ΠΈ, ΠΈΠ·ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ ΠΎΡ Π½ΡΠΊΠΎΠΈ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π²ΡΡΡ Ρ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° constexpr, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° UTF-8 Π² ΠΈΠ·Ρ ΠΎΠ΄Π½ΠΈΡΠ΅ ΡΠ΅ΠΊΡΡΠΎΠ²Π΅.
- libstdc++ ΠΈΠΌΠ° ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π° Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΡΡΠ°Π½Π΄Π°ΡΡΠΈ C++20 ΠΈ C++23, ΠΊΠ°ΡΠΎ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Π·Π°Π³Π»Π°Π²Π΅Π½ ΡΠ°ΠΉΠ» ΠΈ std::format, ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° Π·Π°Π³Π»Π°Π²Π΅Π½ ΡΠ°ΠΉΠ» , Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½ΠΈ ΡΠΈΠΏΠΎΠ²Π΅ Ρ ΠΏΠ»Π°Π²Π°ΡΠ° Π·Π°ΠΏΠ΅ΡΠ°Ρ, Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈ Π·Π°Π³Π»Π°Π²Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅ Π .
- ΠΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠ° Π½ΠΎΠ²ΠΈ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΈ Π°ΡΡΠΈΠ±ΡΡΠΈ Π·Π° Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠΈΡΠ°Π½Π΅, ΡΠ΅ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΈΡΡ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡ ΡΠ΅ ΠΏΡΠ΅Π΄Π°Π²Π° Π² ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π°: "__attribute__((fd_arg(N)))", "__attribute__((fd_arg_read(N)))" ΠΈ "__attribute__((fd_arg_write(N) )) ". ΠΠΎΡΠΎΡΠ΅Π½ΠΈΡΠ΅ Π°ΡΡΠΈΠ±ΡΡΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ Π² ΡΡΠ°ΡΠΈΡΠ΅Π½ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡ (-fanalyzer) Π·Π° ΠΎΡΠΊΡΠΈΠ²Π°Π½Π΅ Π½Π° Π½Π΅ΠΏΡΠ°Π²ΠΈΠ»Π½Π° ΡΠ°Π±ΠΎΡΠ° Ρ ΡΠ°ΠΉΠ»ΠΎΠ²ΠΈ Π΄Π΅ΡΠΊΡΠΈΠΏΡΠΎΡΠΈ.
- ΠΠΎΠ±Π°Π²Π΅Π½ Π΅ Π½ΠΎΠ² Π°ΡΡΠΈΠ±ΡΡ "__attribute__((assume(EXPR)))", Ρ ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΊΠ°ΠΆΠ΅ΡΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ°, ΡΠ΅ ΠΈΠ·ΡΠ°Π·ΡΡ Π΅ Π²Π΅ΡΠ΅Π½ ΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΡΠΎΠ·ΠΈ ΡΠ°ΠΊΡ, Π±Π΅Π· Π΄Π° ΠΎΡΠ΅Π½ΡΠ²Π° ΠΈΠ·ΡΠ°Π·Π°.
- ΠΠΎΠ±Π°Π²Π΅Π½ Π΅ ΡΠ»Π°Π³ "-fstrict-flex-arrays=[level]" Π·Π° ΠΈΠ·Π±ΠΎΡ Π½Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡΠΈ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½Ρ ΠΎΡ Π³ΡΠ²ΠΊΠ°Π² ΠΌΠ°ΡΠΈΠ² Π² ΡΡΡΡΠΊΡΡΡΠΈ (ΡΠ»Π΅Π½ΠΎΠ²Π΅ Π½Π° Π³ΡΠ²ΠΊΠ°Π² ΠΌΠ°ΡΠΈΠ², ΠΌΠ°ΡΠΈΠ² Ρ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΡΠ°Π·ΠΌΠ΅Ρ Π² ΠΊΡΠ°Ρ Π½Π° ΡΡΡΡΠΊΡΡΡΠ°ΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ "int b[] ").
- ΠΠΎΠ±Π°Π²Π΅Π½ Π΅ ΡΠ»Π°Π³ "-Wenum-int-mismatch" Π·Π° ΠΈΠ·Π΄Π°Π²Π°Π½Π΅ Π½Π° ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ, Π°ΠΊΠΎ ΠΈΠΌΠ° Π½Π΅ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΠΈΠ·Π±ΡΠΎΠ΅Π½ ΡΠΈΠΏ ΠΈ ΡΠ΅Π»ΠΎΡΠΈΡΠ»Π΅Π½ ΡΠΈΠΏ.
- ΠΡΠ΅Π΄Π½ΠΈΡΡ ΠΊΡΠ°ΠΉ Π½Π° Fortran ΠΈΠΌΠ° ΠΏΡΠ»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΡΠΈΠ½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅.
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° Π³Π΅Π½Π΅ΡΠΈΡΠ½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΡΠΈΠΏΠΎΠ²Π΅ (generics) Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΊΡΠΌ ΠΏΡΠ΅Π΄Π½ΠΈΡ ΠΊΡΠ°ΠΉ Π·Π° Π΅Π·ΠΈΠΊΠ° Go ΠΈ Π΅ ΠΎΡΠΈΠ³ΡΡΠ΅Π½Π° ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ Ρ ΠΏΠ°ΠΊΠ΅ΡΠΈ Π·Π° Π΅Π·ΠΈΠΊΠ° Go 1.18.
- ΠΠ΅ΠΊΠ΅Π½Π΄ΡΡ Π½Π° AArch64 ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° CPU Ampere-1A (ampere1a), Arm Cortex-A715 (cortex-a715), Arm Cortex-X1C (cortex-x1c), Arm Cortex-X3 (cortex-x3) ΠΈ Arm Neoverse V2 (neoverse -v2) . ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ "armv9.1-a", "armv9.2-a" ΠΈ "armv9.3-a" Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΊΡΠΌ ΠΎΠΏΡΠΈΡΡΠ° "-march=". ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ½ΠΈ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ FEAT_LRCPC, FEAT_CSSC ΠΈ FEAT_LSE2.
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ STAR-MC1 (star-mc1), Arm Cortex-X1C (cortex-x1c) ΠΈ Arm Cortex-M85 (cortex-m85) Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΊΡΠΌ Π±Π΅ΠΊΠ΅Π½Π΄Π° Π½Π° ARM Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ°.
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π·Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ Intel Raptor Lake, Meteor Lake, Sierra Forest, Grand Ridge, Emerald Rapids, Granite Rapids ΠΈ AMD Zen 86 (znver4) Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΊΡΠΌ x4 Π±Π΅ΠΊΠ΅Π½Π΄Π°. Π Π°Π·ΡΠΈΡΠ΅Π½ΠΈΡΡΠ° Π½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° Π½Π° Π½Π°Π±ΠΎΡΠ° ΠΎΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ AVX-IFMA, AVX-VNNI-INT8, AVX-NE-CONVERT, CMPccXADD, AMX-FP16, PREFETCHI, RAO-INT ΠΈ AMX-COMPLEX, ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈ Π² ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈΡΠ΅ Π½Π° Intel, ΡΠ° Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈ. ΠΠ° C ΠΈ C++ Π½Π° ΡΠΈΡΡΠ΅ΠΌΠΈ ΡΡΡ SSE2 Π΅ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½ ΡΠΈΠΏΡΡ __bf16.
- ΠΠ΅ΠΊΠ΅Π½Π΄ΡΡ Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΊΠΎΠ΄ Π·Π° Π³ΡΠ°ΡΠΈΡΠ½ΠΈ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ AMD Radeon (GCN) ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡΠ° Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΡΠΊΠΎΡΠΈΡΠ΅Π»ΠΈ AMD Instinct MI200 Π·Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»Π½ΠΎΡΡΡΠ° Π½Π° OpenMP/OpenACC. ΠΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π° Π²Π΅ΠΊΡΠΎΡΠΈΠ·Π°ΡΠΈΡ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° SIMD ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ.
- ΠΠ½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π½Π° Π±Π΅ΠΊΠ΅Π½Π΄Π° Π·Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° LoongArch.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° XuanTie C906 Π½Π° CPU T-Head (thead-c906) Π² Π±Π΅ΠΊΠ΅Π½Π΄Π° Π½Π° RISC-V. Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΌΠ°Π½ΠΈΠΏΡΠ»Π°ΡΠΎΡΠΈ Π½Π° Π²Π΅ΠΊΡΠΎΡΠΈ, Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½ΠΈ Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° RISC-V Vector Extension Intrinsic 0.11. ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° 30 ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ Π½Π° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° Π½Π° RISC-V.
- ΠΠΎΠ³Π°ΡΠΎ Π³Π΅Π½Π΅ΡΠΈΡΠ°ΡΠ΅ ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ Ρ ΠΎΠΏΡΠΈΡΡΠ° β-sharedβ, ΠΊΠΎΠ΄ΡΡ Π·Π° ΡΡΠ°ΡΡΠΈΡΠ°Π½Π΅ Π²Π΅ΡΠ΅ Π½Π΅ ΡΠ΅ Π΄ΠΎΠ±Π°Π²Ρ ΡΠ»Π΅Π΄ Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° ΡΡΠ΅Π΄Π° Ρ ΠΏΠ»Π°Π²Π°ΡΠ° Π·Π°ΠΏΠ΅ΡΠ°Ρ, Π°ΠΊΠΎ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈΡΠ΅ β-Ofastβ, β-ffast-mathβ ΠΈΠ»ΠΈ β-funsafe-math-optimizationsβ ΡΠ° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ΠΈ .
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° ΡΠΎΡΠΌΠ°ΡΠ° Π·Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ DWARF Π΅ Π²Π½Π΅Π΄ΡΠ΅Π½Π° Π² ΠΏΠΎΡΡΠΈ Π²ΡΠΈΡΠΊΠΈ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ.
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΎΠΏΡΠΈΡ "-gz=zstd" Π·Π° ΠΊΠΎΠΌΠΏΡΠ΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π°Π»Π³ΠΎΡΠΈΡΡΠΌΠ° Zstandard. ΠΡΠ΅ΠΌΠ°Ρ Π½Π°ΡΠ° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΎΡΡΠ°ΡΠ΅Π»ΠΈΡ ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΠΊΠΎΠΌΠΏΡΠ΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ "-gz=zlib-gnu".
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΡΡΠ²ΠΎΠ½Π°ΡΠ°Π»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° OpenMP 5.2 (Open Multi-Processing) ΠΈ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠΈΡΠ΅ OpenMP 5.0 ΠΈ 5.1, Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°ΠΉΠΊΠΈ API ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π·Π° ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π·Π° ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΡΠ΄ΡΠ΅Π½ΠΈ ΠΈ Ρ ΠΈΠ±ΡΠΈΠ΄Π½ΠΈ (CPU + GPU / DSP) ΡΠΈΡΡΠ΅ΠΌΠΈ Ρ ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½Π° ΠΏΠ°ΠΌΠ΅Ρ ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡΠΈ Π·Π° Π²Π΅ΠΊΡΠΎΡΠΈΠ·Π°ΡΠΈΡ (SIMD).
- ΠΡΡ Π²ΡΡΠ»Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π½Π°ΡΠ»Π΅Π΄Π΅Π½ΠΈΡ ΡΠΎΡΠΌΠ°Ρ Π·Π° ΡΡΡ ΡΠ°Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° ΠΎΡΡΡΡΠ°Π½ΡΠ²Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠΈ STABS (Π°ΠΊΡΠΈΠ²ΠΈΡΠ°Π½ Ρ ΠΎΠΏΡΠΈΠΈΡΠ΅ -gstabs ΠΈ -gxcoff), ΡΡΠ·Π΄Π°Π΄Π΅Π½ ΠΏΡΠ΅Π· 1980 Π³. ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π² dbx Π΄Π΅Π±ΡΠ³Π΅ΡΠ°.
- ΠΡΡ Π²ΡΡΠ»Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Solaris 11.3 (ΠΊΠΎΠ΄ΡΡ Π·Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠ°Π·ΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ° ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π°Ρ Π² Π±ΡΠ΄Π΅ΡΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅).
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru