ΠΠ°ΠΊΠΎΠ½ ΡΠ΅ΡΡ ΠΌΠ΅ΡΠ΅ΡΠΈ ΡΠ°Π·Π²ΠΎΡΠ°, ΠΎΠ±ΡΠ°Π²ΡΠ΅Π½ ΡΠ΅ LLVM 22.1.0. Π Π°Π·Π²ΠΈΡΠ° Π°Π»Π°ΡΠ΅ (ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠ΅, ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΠ΅ ΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ΅ ΠΊΠΎΠ΄Π°) ΠΊΠΎΡΠΈ ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ΅ Ρ ΠΌΠ΅ΡΡΠ±ΠΈΡΠ½ΠΈ ΠΊΠΎΠ΄ Π²ΠΈΡΡΡΠ΅Π»Π½ΠΈΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠ° ΡΠ»ΠΈΡΠ½ΠΈΡ RISC-Ρ (Π²ΠΈΡΡΡΠ΅Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π° Π½ΠΈΡΠΊΠΎΠ³ Π½ΠΈΠ²ΠΎΠ° ΡΠ° ΡΠΈΡΡΠ΅ΠΌΠΎΠΌ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡΠ΅ Π½Π° Π²ΠΈΡΠ΅ Π½ΠΈΠ²ΠΎΠ°). ΠΠ΅Π½Π΅ΡΠΈΡΠ°Π½ΠΈ ΠΏΡΠ΅ΡΠ΄ΠΎΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅ ΡΠ΅ ΠΊΠΎΠ½Π²Π΅ΡΡΠΎΠ²Π°ΡΠΈ Ρ ΠΌΠ°ΡΠΈΠ½ΡΠΊΠΈ ΠΊΠΎΠ΄ Π·Π° Π΄Π°ΡΡ ΡΠΈΡΠ½Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ ΠΈΠ»ΠΈ Π³Π° ΠΌΠΎΠΆΠ΅ ΠΊΠΎΡΠΈΡΡΠΈΡΠΈ JIT (just-in-time) ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅Ρ Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°ΡΠ΅ ΠΌΠ°ΡΠΈΠ½ΡΠΊΠΈΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΡΠΎΠΊΠΎΠΌ ΠΈΠ·Π²ΡΡΠ°Π²Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°. ΠΠ° ΠΎΡΠ½ΠΎΠ²Ρ LLVM ΡΠ΅Ρ Π½ΠΎΠ»ΠΎΠ³ΠΈΡΠ°, ΠΏΡΠΎΡΠ΅ΠΊΠ°Ρ ΡΠ°Π·Π²ΠΈΡΠ° Clang ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅Ρ, ΠΊΠΎΡΠΈ ΠΏΠΎΠ΄ΡΠΆΠ°Π²Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΡΠΊΠ΅ ΡΠ΅Π·ΠΈΠΊΠ΅ C, C++ ΠΈ Objective-C. ΠΠΎΡΠ΅Π²ΡΠΈ ΠΎΠ΄ Π³ΡΠ°Π½Π΅ 18.x, ΠΏΡΠΎΡΠ΅ΠΊΠ°Ρ ΡΠ΅ ΠΏΡΠ΅ΡΠ°ΠΎ Π½Π° Π½ΠΎΠ²Ρ ΡΠ΅ΠΌΡ Π½ΡΠΌΠ΅ΡΠ°ΡΠΈΡΠ΅ Π²Π΅ΡΠ·ΠΈΡΠ°, ΠΏΡΠ΅ΠΌΠ° ΠΊΠΎΡΠΎΡ ΡΠ΅ ΠΈΠ·Π΄Π°ΡΠ΅ 0 (βN.0β) ΠΊΠΎΡΠΈΡΡΠΈ ΡΠΎΠΊΠΎΠΌ ΡΠ°Π·Π²ΠΎΡΠ°, Π° ΠΏΡΠ²Π° ΡΡΠ°Π±ΠΈΠ»Π½Π° Π²Π΅ΡΠ·ΠΈΡΠ° ΡΠ΅ Π½ΡΠΌΠ΅ΡΠΈΡΠ°Π½Π° ΠΊΠ°ΠΎ βN.1β.
ΠΠΎΠ±ΠΎΡΡΠ°ΡΠ° Ρ Π¦Π»Π°Π½Π³ 22 ΡΠΊΡΡΡΡΡΡ:
- ΠΠΎΠ΄Π°ΡΠ° ΡΠ΅ ΠΏΠΎΠ΄ΡΡΠΊΠ° Π·Π° ΡΠΎΠΊΠ΅Π½Π΅ Π·Π° Π°Π»ΠΎΠΊΠ°ΡΠΈΡΡ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ΅ (ΠΠ»ΠΎΠΊΠ°ΡΠΈΠΎΠ½ΠΈ ΡΠΎΠΊΠ΅Π½ΠΈ) Π·Π° ΠΎΠ±Π΅Π»Π΅ΠΆΠ°Π²Π°ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠ° Π°Π»ΠΎΠΊΠ°ΡΠΈΡΠ΅ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ΅ ΠΊΠΎΡΠ΅ ΡΠ΅ ΠΈΠ·Π²ΠΎΠ΄Π΅ ΠΏΠΎΠΌΠΎΡΡ ΡΡΠ½ΠΊΡΠΈΡΠ° ΠΊΠ°ΠΎ ΡΡΠΎ ΡΠ΅ malloc ΡΠ΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΈΠΌ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ. ΠΠ»ΠΎΠΊΠ°ΡΠΈΠΎΠ½ΠΈ ΡΠΎΠΊΠ΅Π½ΠΈ ΠΎΠΌΠΎΠ³ΡΡΠ°Π²Π°ΡΡ ΡΡΡΡΠΊΡΡΡΠΈΡΠ°ΡΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ° ΠΎ Ρ ΠΈΠΏΡ, ΠΏΠΎΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²ΡΡΡΡ ΠΎΡΠΊΡΠΈΠ²Π°ΡΠ΅ ΡΡΡΠ΅ΡΠ° ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ΅ ΠΈ ΠΎΠΌΠΎΠ³ΡΡΠ°Π²Π°ΡΡ Π³ΡΡΠΏΠΈΡΠ°ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΠ°ΡΠ° Π½Π° ΠΎΡΠ½ΠΎΠ²Ρ ΡΠΈΡ ΠΎΠ²Π΅ Π½Π°ΠΌΠ΅Π½Π΅ ΠΈΠ»ΠΈ ΠΎΠ±ΡΠ°Π·Π°ΡΠ° ΠΌΠΎΠ΄ΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ΅ (Π½ΠΏΡ. ΠΎΠ΄Π²Π°ΡΠ°ΡΠ΅ βΠ²ΡΡΡΠΈΡ β ΠΎΠ΄ βΡ Π»Π°Π΄Π½ΠΈΡ β ΠΏΠΎΠ΄Π°ΡΠ°ΠΊΠ°). ΠΠ° Π±ΠΈΡΡΠ΅ ΠΎΠΌΠΎΠ³ΡΡΠΈΠ»ΠΈ, ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ Π·Π°ΡΡΠ°Π²ΠΈΡΡ β-fsanitize=alloc-tokenβ.
- ΠΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ΅ Π²Π΅Π·Π°Π½Π΅ Π·Π° C ΡΠ΅Π·ΠΈΠΊ:
- ΠΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π½ ΡΠ΅ Π½Π°ΡΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠ΅ ΠΊΠΎΡΠΈ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·Π°ΠΌ ΠΎΠ΄Π»ΠΎΠΆΠ΅Π½ΠΎΠ³ ΠΈΠ·Π²ΡΡΠ°Π²Π°ΡΠ° βdeferβ, ΠΎΠΌΠΎΠ³ΡΡΠ°Π²Π°ΡΡΡΠΈ ΠΈΠ·Π²ΡΡΠ°Π²Π°ΡΠ΅ Π°ΠΊΡΠΈΡΠ° ΠΊΠ°Π΄Π° ΡΡΠ΅Π½ΡΡΠ½ΠΈ ΠΎΠΏΡΠ΅Π³ ΠΈΠ·Π°ΡΠ΅ ΠΈΠ· ΡΠ΅. ΠΠΎΠ΄Π°ΡΠ° ΡΠ΅ Π·Π°ΡΡΠ°Π²ΠΈΡΠ° β-fdefer-tsβ Π΄Π° Π±ΠΈ ΡΠ΅ ΠΎΠΌΠΎΠ³ΡΡΠΈΠ»Π° ΠΏΠΎΠ΄ΡΡΠΊΠ° Π·Π° βdeferβ.
- ΠΠΎΠ΄Π°ΡΠ° ΡΠ΅ ΡΠ³ΡΠ°ΡΠ΅Π½Π° ΡΡΠ½ΠΊΡΠΈΡΠ° __builtin_stack_address(), ΠΊΠΎΡΠ° ΡΠ΅ ΡΠ»ΠΈΡΠ½Π° ΡΠ»ΠΈΡΠ½ΠΎΡ ΡΡΠ½ΠΊΡΠΈΡΠΈ Ρ GCC-Ρ. ΠΠ²Π° ΡΡΠ½ΠΊΡΠΈΡΠ° Π²ΡΠ°ΡΠ° Π°Π΄ΡΠ΅ΡΡ ΡΡΠ΅ΠΊΠ°, ΠΎΠ΄Π²Π°ΡΠ°ΡΡΡΠΈ ΠΎΠ±Π»Π°ΡΡ ΡΡΠ΅ΠΊΠ° ΡΡΠ΅Π½ΡΡΠ½Π΅ ΡΡΠ½ΠΊΡΠΈΡΠ΅ ΠΊΠΎΡΠ° ΡΠ΅ ΠΏΠΎΠ·Π²Π°Π»Π° __builtin_stack_address() ΠΎΠ΄ Π½Π°ΡΠ΅Π΄Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΡΠ° ΠΊΠΎΡΠ΅ ΠΎΠ½Π° ΠΏΠΎΠ·ΠΈΠ²Π°.
- ΠΠΎΠ³ΡΡΠ½ΠΎΡΡΠΈ ΠΊΠΎΡΠ΅ ΡΠ΅ ΡΠ°Π·Π²ΠΈΡΠ°ΡΡ Π·Π° Π±ΡΠ΄ΡΡΠΈ C2y ΡΡΠ°Π½Π΄Π°ΡΠ΄:
- ΠΠΎΠ΄Π°ΡΠ° ΡΠ΅ ΠΏΠΎΠ΄ΡΡΠΊΠ° Π·Π° ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π΅ ΠΏΠ΅ΡΡΠ΅, ΠΊΠΎΡΠ° Π²Π°ΠΌ ΠΎΠΌΠΎΠ³ΡΡΠ°Π²Π° Π΄Π° Π΄ΠΎΠ΄Π΅Π»ΠΈΡΠ΅ ΠΈΠΌΠ΅Π½Π° ΠΏΠ΅ΡΡΠ°ΠΌΠ° ΠΈ switch Π½Π°ΡΠ΅Π΄Π±Π°ΠΌΠ°, ΠΊΠΎΡΠ΅ ΡΠ΅ ΠΌΠΎΠ³Ρ Π½Π°Π²Π΅ΡΡΠΈ Ρ Π½Π°ΡΠ΅Π΄Π±Π°ΠΌΠ° break ΠΈ continue Π΄Π° Π±ΠΈ ΡΠ΅ Π΅ΠΊΡΠΏΠ»ΠΈΡΠΈΡΠ½ΠΎ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π»Π° ΠΏΠ΅ΡΡΠ° ΠΈΠ· ΠΊΠΎΡΠ΅ ΡΠ΅ ΠΈΠ·Π»Π°Π·ΠΈ. outer: for (int i = 0; i < IK; ++ i) { for (int j = 0; j < JK; ++ j) { continue; // ΠΈΠ΄ΠΈ Π½Π° CONT1 continue outer; // ΠΈΠ΄ΠΈ Π½Π° CONT2 // CONT1 } // CONT2 }
- ΠΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ° ΡΠ³ΡΠ°ΡΠ΅Π½ΠΎΠ³ ΠΌΠ°ΠΊΡΠΎΠ° β__COUNTER__β, Π΄ΠΈΠ·Π°ΡΠ½ΠΈΡΠ°Π½ΠΎΠ³ Π·Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°ΡΠ΅ ΡΠ΅Π΄ΠΈΠ½ΡΡΠ²Π΅Π½ΠΈΡ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡΠΊΠΈΡ ΠΈΠΌΠ΅Π½Π°, ΠΏΡΠΎΡΠΈΡΠ΅Π½Π° ΡΠ΅ ΠΈ ΡΠΊΡΡΡΠ΅Π½Π° Ρ ΡΡΠ°Π½Π΄Π°ΡΠ΄. ΠΠΎΡΡΠ°Π²ΡΠ΅Π½ΠΎ ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅ΡΠ΅ ΠΎΠ΄ 2147483647 ΠΏΠΎΠ·ΠΈΠ²Π° ΠΎΠ²ΠΎΠΌ ΠΌΠ°ΠΊΡΠΎΡ; ΠΏΡΠ΅ΠΊΠΎΡΠ°ΡΠ΅ΡΠ΅ ΠΎΠ²ΠΎΠ³ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅ΡΠ° Π³Π΅Π½Π΅ΡΠΈΡΠ°ΡΠ΅ Π³ΡΠ΅ΡΠΊΡ.
- Π£ΠΊΠ»ΠΎΡΠ΅Π½ΠΎ ΡΠ΅ ΡΠΏΠΎΠ·ΠΎΡΠ΅ΡΠ΅ (-Wstatic-in-inline) ΠΏΡΠΈ ΠΊΠΎΡΠΈΡΡΠ΅ΡΡ ΡΡΠ°ΡΠΈΡΠΊΠΈΡ ΡΡΠ½ΠΊΡΠΈΡΠ° ΠΈΠ»ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΡΠΈΠ²ΠΈΡ ΡΠ½ΡΡΠ°Ρ ΡΡΠ½ΠΊΡΠΈΡΠ° Π΄Π΅ΠΊΠ»Π°ΡΠΈΡΠ°Π½ΠΈΡ ΠΊΠ°ΠΎ βextern inlineβ.
- ΠΠΎΠ³ΡΡΠ½ΠΎΡΡΠΈ Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½Π΅ Ρ ΡΡΠ°Π½Π΄Π°ΡΠ΄Ρ C23 C:
- ΠΠ°Π³Π»Π°Π²Π½Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° float.h ΡΠ°Π΄Π° ΠΏΠΎΠ΄ΡΠΆΠ°Π²Π° ΠΌΠ°ΠΊΡΠΎΠ΅ FLT_SNAN, DBL_SNAN ΠΈ LDBL_SNAN, ΠΊΠΎΡΠΈ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°ΡΡ ΡΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π΅ (ΠΈΠ·Π°Π·ΠΈΠ²Π°ΡΡΡΠΈ ΠΈΠ·ΡΠ·Π΅ΡΠ°ΠΊ ΠΊΠ°Π΄Π° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ Ρ Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠΊΠΈΠΌ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡΠ°ΠΌΠ°) NaN Π²ΡΠ΅Π΄Π½ΠΎΡΡΠΈ Π·Π° ΡΠΈΠΏΠΎΠ²Π΅ float, double ΠΈ long double.
- ΠΡΠΏΡΠ°Π²ΡΠ΅Π½Π° ΡΠ΅ Π³ΡΠ΅ΡΠΊΠ° Π³Π΄Π΅ ΡΡ ΡΠ°Π·Π»ΠΈΡΠΈΡΠΈ Π½Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈ ΡΠΈΠΏΠΎΠ²ΠΈ ΡΡΠ΅ΡΠΈΡΠ°Π½ΠΈ ΠΊΠ°ΠΎ ΠΊΠΎΠΌΠΏΠ°ΡΠΈΠ±ΠΈΠ»Π½ΠΈ ΡΠ½ΡΡΠ°Ρ ΠΈΡΡΠ΅ ΡΠ΅Π΄ΠΈΠ½ΠΈΡΠ΅ Π·Π° ΠΏΡΠ΅Π²ΠΎΠ΄ Π°ΠΊΠΎ ΡΡ ΠΈΠΌΠ°Π»ΠΈ ΠΈΡΡΠ° ΠΏΠΎΡΠ°.
- ΠΠ°ΡΡΠ°Π²ΠΈΡΠ° β-MGβ ΠΊΠΎΡΠ° ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠΈ Π·Π° ΠΈΠ³Π½ΠΎΡΠΈΡΠ°ΡΠ΅ Π½Π΅Π΄ΠΎΡΡΠ°ΡΡΡΠΈΡ Π·Π°Π³Π»Π°Π²Π½ΠΈΡ Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° ΡΠΎΠΊΠΎΠΌ ΡΠΊΠ΅Π½ΠΈΡΠ°ΡΠ° Π·Π°Π²ΠΈΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΡΠΈΡΠ΅Π½Π° ΡΠ΅ Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π΅ β#embedβ ΠΈ ΡΠ°Π΄Π° ΠΏΠΎΡΠΈΡΠΊΡΡΠ΅ Π³ΡΠ΅ΡΠΊΡ βΠ΄Π°ΡΠΎΡΠ΅ΠΊΠ° Π½ΠΈΡΠ΅ ΠΏΡΠΎΠ½Π°ΡΠ΅Π½Π°β ΠΊΠ°Π΄Π° Π΄Π°ΡΠΎΡΠ΅ΠΊΠ° Π½Π°Π²Π΅Π΄Π΅Π½Π° Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΈ β#embedβ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠ΅.
- ΠΠ°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊΠ΅ ΠΏΠΎΠ²Π΅Π·Π°Π½Π΅ ΡΠ° C++:
- ΠΠΎΠ΄Π°ΡΠ° ΡΠ΅ ΠΌΠΎΠ³ΡΡΠ½ΠΎΡΡ ΠΊΠΎΡΠΈΡΡΠ΅ΡΠ° ΡΡΡΡΠΊΡΡΡΠΈΡΠ°Π½ΠΈΡ ΠΏΠΎΠ²Π΅Π·ΠΈΠ²Π°ΡΠ° Ρ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΡ βconstexprβ, ΠΊΠ°ΠΊΠΎ ΡΠ΅ ΡΠ°Π·Π²ΠΈΡΠ΅Π½ΠΎ Ρ C++2c (C++26) ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΠΈ. Π’ΠΎ Π·Π½Π°ΡΠΈ Π΄Π° ΡΠ΅ΡΠ΅ΡΠ΅Π½ΡΠ΅ Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½Π΅ ΠΈΠ·ΡΠ°Π·Π΅ ΡΠ°Π΄Π° ΡΠ°ΠΌΠ΅ ΠΌΠΎΠ³Ρ Π±ΠΈΡΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ½ΠΈ ΠΈΠ·ΡΠ°Π·ΠΈ. ΠΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ°Π½Π° ΡΠ΅ ΠΏΠΎΠ΄ΡΡΠΊΠ° Π·Π° Π½ΠΈΠ·ΠΎΠ²Π΅ ΠΈ ΡΠ΅Π΄Π½ΠΎΡΡΠ°Π²Π½Π΅ ΡΡΡΡΠΊΡΡΡΠ΅ (ΡΠΎΡΠΊΠ΅ ΡΠΎΡ ΡΠ²Π΅ΠΊ Π½ΠΈΡΡ ΠΏΠΎΠ΄ΡΠΆΠ°Π½Π΅). constexpr int arr[] = {1, 2}; constexpr auto [x, y] = arr;
- ΠΠ°ΠΊΠΎ Π·Π°Ρ ΡΠ΅Π²Π° ΡΡΠ°Π½Π΄Π°ΡΠ΄ C++20, ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅ΡΠ° ΡΠ΅ ΡΠ°Π΄Π° ΠΊΠΎΠ½Π²Π΅ΡΡΡΡΡ Ρ ΡΡΠ°Π½Π΄Π°ΡΠ΄Π½ΠΈ ΠΎΠ±Π»ΠΈΠΊ ΠΏΡΠ΅ ΠΏΡΠΎΠ²Π΅ΡΠ΅, ΡΡΠΎ ΠΎΠΌΠΎΠ³ΡΡΠ°Π²Π° ΠΏΡΠ΅ΡΠΈΠ·Π½ΠΈΡΠ΅ Π΄ΠΈΡΠ°Π³Π½ΠΎΡΡΠΈΡΠΊΠ΅ ΠΏΠΎΡΡΠΊΠ΅ ΠΈ ΠΏΡΠ°Π²ΠΈΠ»Π½ΠΎ ΡΡΠΊΠΎΠ²Π°ΡΠ΅ Π³ΡΠ΅ΡΠΊΠ°ΠΌΠ° Π·Π°ΠΌΠ΅Π½Π΅ Ρ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈΠΌΠ° ΡΠ°Π±Π»ΠΎΠ½Π° ΠΊΠΎΡΠΈ ΡΠ΅ ΠΊΠΎΡΠΈΡΡΠ΅ ΡΠ°ΠΌΠΎ Ρ ΠΊΠΎΠ½ΡΠ΅ΠΏΡ-ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈΠΌΠ°.
- ΠΠΎΠ΄Π°ΡΠ° ΡΠ΅ ΡΠ°ΠΌΠΈΠ»ΠΈΡΠ° ΡΠ³ΡΠ°ΡΠ΅Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΡΠ° β__builtin_[lt|gt|le|ge]_synthesizes_from_spaceshipβ Π΄Π° Π±ΠΈ ΡΠ΅ ΡΡΠ²ΡΠ΄ΠΈΠ»ΠΎ Π΄Π° Π»ΠΈ ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΈ ΠΏΠΎΡΠ΅ΡΠ΅ΡΠ° β<β, β>β, β<=" ΠΈ β>=" ΡΠΈΠ½ΡΠ΅ΡΠΈΠ·ΠΎΠ²Π°Π½ΠΈ ΠΈΠ· ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° β<=>β.
- ΠΠ°ΡΠ°ΠΌΠ΅ΡΠ°Ρ β-Wincompatible-pointer-typesβ ΡΠ΅ ΠΏΡΠΎΠΌΠ΅ΡΠ΅Π½ ΡΠ°ΠΊΠΎ Π΄Π° ΠΏΡΠΈΠΊΠ°Π·ΡΡΠ΅ Π³ΡΠ΅ΡΠΊΡ ΡΠΌΠ΅ΡΡΠΎ ΡΠΏΠΎΠ·ΠΎΡΠ΅ΡΠ°. ΠΠ° Π±ΠΈΡΡΠ΅ ΡΠ΅ Π²ΡΠ°ΡΠΈΠ»ΠΈ Π½Π° ΠΏΡΠ΅ΡΡ ΠΎΠ΄Π½ΠΎ ΠΏΠΎΠ½Π°ΡΠ°ΡΠ΅, ΠΊΠΎΡΠΈΡΡΠΈΡΠ΅ ΠΎΠΏΡΠΈΡΡ β-Wno-error=incompatible-pointer-typesβ.
- ΠΠΎΠ΄Π°ΡΠ΅ ΡΡ ΡΠ³ΡΠ°ΡΠ΅Π½Π΅ ΡΡΠ½ΠΊΡΠΈΡΠ΅ __builtin_bswapg, __builtin_elementwise_ldexp, __builtin_elementwise_fshl, __builtin_elementwise_fshr, __builtin_elementwise_minnumnum, __builtin_elementwise_maxnumnum, __builtin_masked_load, __builtin_masked_expand_load, __builtin_masked_store, __builtin_masked_compress_store, __builtin_masked_gather, __builtin_masked_scatter ΠΈ __builtin_dedup_pack. ΠΠ° ΠΏΡΠΈΠΌΠ΅Ρ, builtin_dedup_pack Π²Π°ΠΌ ΠΎΠΌΠΎΠ³ΡΡΠ°Π²Π° Π΄Π° ΡΠΊΠ»ΠΎΠ½ΠΈΡΠ΅ Π΄ΡΠΏΠ»ΠΈΠΊΠ°ΡΠ΅ ΡΠ° Π»ΠΈΡΡΠ΅ ΡΠΈΠΏΠΎΠ²Π°: ΠΊΠΎΡΠΈΡΡΠ΅ΡΠΈ MyTypeList = TypeList<__builtin_dedup_pack β¦>; // ΡΠ΅Π·ΡΠ»ΡΡΡΡΡΠΈ ΡΠΈΠΏ ΡΠ΅ Π±ΠΈΡΠΈ TypeList
- ΠΡΠΈΠ»ΠΈΠΊΠΎΠΌ ΠΎΡΠΊΠ»Π°ΡΠ°ΡΠ° Π³ΡΠ΅ΡΠ°ΠΊΠ° Π½Π΅Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½ΠΎΠ³ ΠΏΠΎΠ½Π°ΡΠ°ΡΠ° ΠΏΠΎΠΌΠΎΡΡ UBSan-Π° (-fsanitize=undefined -fsanitize-trap=undefined), ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ΅ ΠΎ ΡΠ·ΡΠΎΠΊΡ Π³ΡΠ΅ΡΠΊΠ΅ ΡΡ ΡΠ°Π΄Π° ΡΠΊΡΡΡΠ΅Π½Π΅ Ρ Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ΅ ΠΎ ΠΎΡΠΊΠ»Π°ΡΠ°ΡΡ Π³ΡΠ΅ΡΠ°ΠΊΠ°. ΠΠΎΠ΄Π°ΡΠ° ΡΠ΅ Π·Π°ΡΡΠ°Π²ΠΈΡΠ° β-fsanitize-debug-trap-reasonsβ Π΄Π° Π±ΠΈ ΡΠ΅ ΠΎΠ΄ΡΠ΅Π΄ΠΈΠΎ Π½ΠΈΠ²ΠΎ Π΄Π΅ΡΠ°ΡΠ° Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ°ΠΌΠ° ΠΎ Π³ΡΠ΅ΡΡΠΈ. ΠΠΎΠΆΠ΅ ΡΠ΅ ΠΏΠΎΠ΄Π΅ΡΠΈΡΠΈ Π½Π° βΠΎΡΠ½ΠΎΠ²Π½ΠΎβ Π·Π° ΠΎΠΏΡΡΠ΅ ΠΎΠΏΠΈΡΠ΅ (Π½ΠΏΡ. βΠΡΠ΅ΠΊΠΎΡΠ°ΡΠ΅ΡΠ΅ ΡΠ°Π±ΠΈΡΠ°ΡΠ° ΡΠ΅Π»ΠΈΡ Π±ΡΠΎΡΠ΅Π²Π°β) ΠΈ βΠ΄Π΅ΡΠ°ΡΠ½ΠΎβ Π΄Π° Π±ΠΈ ΡΠ΅ ΡΠΊΡΡΡΠΈΠ»Π΅ Π΄Π΅ΡΠ°ΡΠ½Π΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ΅ (Π½ΠΏΡ. βΠΏΡΠ΅ΠΊΠΎΡΠ°ΡΠ΅ΡΠ΅ ΡΠ°Π±ΠΈΡΠ°ΡΠ° ΠΏΠΎΡΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ΅Π»ΠΈΡ Π±ΡΠΎΡΠ΅Π²Π° Ρ 'a + b'β).
- ΠΠΎΠ΄Π°ΡΠ΅ Π½ΠΎΠ²Π΅ ΠΎΠ·Π½Π°ΠΊΠ΅ ΠΊΠΎΠΌΠΏΠ°ΡΠ»Π΅ΡΠ°:
- β-f[no-]sanitize-debug-trap-reasonsβ Π΄Π° Π±ΠΈ ΡΠ΅ ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°Π»ΠΎ Π΄Π° Π»ΠΈ ΡΡ ΡΠ°Π·Π»ΠΎΠ·ΠΈ Π·Π° Π·Π°ΡΠΎΠ±ΡΠ°Π²Π°ΡΠ΅ ΠΈΠ·ΡΠ·Π΅ΡΠ°ΠΊΠ° ΡΠ³ΡΠ°ΡΠ΅Π½ΠΈ Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡΠ΅ ΠΎ Π΄Π΅Π±Π°Π³ΠΎΠ²Π°ΡΡ ΠΏΡΠΈΠ»ΠΈΠΊΠΎΠΌ ΠΊΠΎΠΌΠΏΠ°ΡΠ»ΠΈΡΠ°ΡΠ° ΡΠ° ΡΠ΅ΠΆΠΈΠΌΠΎΠΌ β-fsanitize-trapβ.
- β-fsanitize=alloc-tokenβ, β-falloc-token-maxβ, β-fsanitize-alloc-token-fast-abiβ ΠΈ β-fsanitize-alloc-token-extendedβ Π·Π° ΡΠΏΡΠ°Π²ΡΠ°ΡΠ΅ ΡΠΎΠΊΠ΅Π½ΠΈΠΌΠ° Π·Π° Π°Π»ΠΎΠΊΠ°ΡΠΈΡΡ ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ΅.
- β-fmatrix-memory-layoutβ Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ ΡΠ°ΡΠΏΠΎΡΠ΅Π΄Π° ΠΌΠ΅ΠΌΠΎΡΠΈΡΠ΅ ΠΌΠ°ΡΡΠΈΡΠ½ΠΈΡ ΡΠΈΠΏΠΎΠ²Π° (Π½ΠΏΡ. ΠΊΠΎΠ»ΠΎΠ½Π°-Π³Π»Π°Π²Π½Π° Π·Π° ΠΊΠΎΠ»ΠΎΠ½Ρ-Π³Π»Π°Π²Π½Ρ, ΡΠ΅Π΄-Π³Π»Π°Π²Π½ΠΈ Π·Π° ΡΠ΅Π΄-Π³Π»Π°Π²Π½ΠΈ).
- Π€ΡΠ½ΠΊΡΠΈΡΠ΅ ΡΠ°Π΄Π° ΠΈΠΌΠ°ΡΡ Π°ΡΡΠΈΠ±ΡΡ βmalloc_spanβ, ΡΠ»ΠΈΡΠ°Π½ Π°ΡΡΠΈΠ±ΡΡΡ malloc, Π°Π»ΠΈ ΠΏΡΠΈΠΌΠ΅Π½ΡΠΈΠ² Π½Π° ΡΡΠ½ΠΊΡΠΈΡΠ΅ ΠΊΠΎΡΠ΅ Π²ΡΠ°ΡΠ°ΡΡ ΡΡΡΡΠΊΡΡΡΠ΅ ΡΠ»ΠΈΡΠ½Π΅ span-Ρ ΠΊΠΎΡΠ΅ ΡΠ°Π΄ΡΠΆΠ΅ ΠΏΠΎΠΊΠ°Π·ΠΈΠ²Π°Ρ ΠΈ ΠΏΠΎΡΠ΅ ΡΠ° Π²Π΅Π»ΠΈΡΠΈΠ½ΠΎΠΌ ΠΈΠ»ΠΈ ΠΏΠΎΠΊΠ°Π·ΠΈΠ²Π°Ρ Π½Π° ΠΊΡΠ°Ρ Π±Π»ΠΎΠΊΠ°.
- ΠΠΎΠ΄Π°Ρ ΡΠ΅ Π°ΡΡΠΈΠ±ΡΡ βmodular_formatβ Π·Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠΊΠΈ ΠΈΠ·Π±ΠΎΡ ΠΏΠΎΡΡΠ΅Π±Π½Π΅ ΡΡΠ°ΡΠΈΡΠΊΠΈ ΠΏΠΎΠ²Π΅Π·Π°Π½Π΅ ΠΈΠΌΠΏΠ»Π΅ΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡΠ΅ printf ΠΏΡΠΈΠ»ΠΈΠΊΠΎΠΌ ΠΏΠΎΠ²Π΅Π·ΠΈΠ²Π°ΡΠ°.
- ΠΠ»Π°ΡΠΈ Π·Π° Π΄ΠΈΡΠ°Π³Π½ΠΎΡΡΠΈΠΊΡ ΠΈ ΡΡΠ°ΡΠΈΡΠΊΡ Π°Π½Π°Π»ΠΈΠ·Ρ ΡΡ ΠΏΡΠΎΡΠΈΡΠ΅Π½ΠΈ, Π΄ΠΎΠ΄Π°ΡΠ΅ ΡΡ Π½ΠΎΠ²Π΅ ΠΏΡΠΎΠ²Π΅ΡΠ΅ (Π½Π΅ΠΊΠΎΠ»ΠΈΠΊΠΎ Π΄Π΅ΡΠ΅ΡΠΈΠ½Π° ΠΏΠΎΠ±ΠΎΡΡΠ°ΡΠ° Π²Π΅Π·Π°Π½ΠΈΡ Π·Π° Π΄ΠΈΡΠ°Π³Π½ΠΎΡΡΠΈΠΊΡ).
- ΠΠΎΠ΄Π°ΡΠ½Π΅ ΠΈΠ½ΡΡΠΈΠ½Π·ΠΈΡΠ½Π΅ ΡΡΠ½ΠΊΡΠΈΡΠ΅ Π·Π° SSE, AVX ΠΈ AVX512 Π΅ΠΊΡΡΠ΅Π½Π·ΠΈΡΠ΅ ΡΡ Π΄ΠΎΠ΄Π°ΡΠ΅ X86 Π±Π΅ΠΊΠ΅Π½Π΄Ρ. ΠΠΎΠ΄Π°ΡΠΈ ΡΡ ΡΠ΅ΠΆΠΈΠΌΠΈ ΠΈΠ·Π³ΡΠ°Π΄ΡΠ΅ Π·Π° Intel ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ΅ Π·Π°ΡΠ½ΠΎΠ²Π°Π½Π΅ Π½Π° ΠΌΠΈΠΊΡΠΎΠ°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΠΌΠ° Wildcat Lake (-march=wildcatlake) ΠΈ Nova Lake (-march=novalake).
- ΠΠ΅ΠΊΠ΅Π½Π΄ AArch64 ΡΠ°Π΄Π° ΠΏΠΎΠ΄ΡΠΆΠ°Π²Π° ΠΏΡΠΎΡΠ΅ΡΠΎΡΠ΅ Ampere Computing Ampere1C (ampere1c), Arm C1-Nano (c1-nano), Arm C1-Pro (c1-pro), Arm C1-Premium (c1-premium) ΠΈ Arm C1-Ultra (c1-ultra). ΠΠΎΠ΄Π°ΡΠ΅ ΡΡ Π΄ΠΎΠ΄Π°ΡΠ½Π΅ ΡΠ³ΡΠ°ΡΠ΅Π½Π΅ ΡΡΠ½ΠΊΡΠΈΡΠ΅ Π·Π° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠ΅ FCVTZ[US], FCVTN[US], FCVTM[US], FCVTP[US] ΠΈ FCVTA[US]. ΠΠΎΠ΄ΡΡΠΊΠ° Π·Π° Π²ΠΈΡΠ΅Π²Π΅ΡΠ·ΠΈΠΎΠ½ΠΎ ΡΠΏΡΠ°Π²ΡΠ°ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡΠ°ΠΌΠ° (FMV) ΡΠ΅ ΡΡΠ°Π±ΠΈΠ»ΠΈΠ·ΠΎΠ²Π°Π½Π°. ΠΠΎΡΠΈΡΠ½ΠΈΡΠΈ ΡΠ°Π΄Π° ΠΌΠΎΠ³Ρ Π΄Π° ΠΏΡΠΎΠΌΠ΅Π½Π΅ ΠΏΡΠΈΠΎΡΠΈΡΠ΅Ρ ΡΠ°Π·Π»ΠΈΡΠΈΡΠΈΡ Π²Π΅ΡΠ·ΠΈΡΠ° ΡΡΠ½ΠΊΡΠΈΡΠ°.
- ΠΠΎΠ΄Π°ΡΠ° ΡΠ΅ ΠΏΠΎΠ΄ΡΡΠΊΠ° Π·Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ LoongArch32 (LA32R, LA32S).
- ΠΠΎΠ±ΠΎΡΡΠ°Π½ΠΈ Π±Π΅ΠΊΠ΅Π½Π΄ΠΎΠ²ΠΈ Π·Π° ARM, AMDGPU, RISC-V, LoongArch64, MIPS, WebAssembly ΠΈ PowerPC Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅.
ΠΠ·Π²ΠΎΡ: ΠΎΠΏΠ΅Π½Π½Π΅Ρ.ΡΡ
