Π‘Π»Π΅Π΄ Π΅Π΄Π½Π° Π³ΠΎΠ΄ΠΈΠ½Π° ΡΠ°Π±ΠΎΡΠ° Π΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠΈ GCC 15.1, ΠΏΡΡΠ²ΠΎΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ Π² Π½ΠΎΠ²Π°ΡΠ° Π²Π΅ΡΡΠΈΡ GCC 15.x. Π ΡΡΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ Ρ Π½ΠΎΠΌΠ΅ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π²Π΅ΡΡΠΈΠΈΡΠ΅, Π²Π΅ΡΡΠΈΡ 15.0 Π΅ Π±ΠΈΠ»Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° Π² ΠΏΡΠΎΡΠ΅ΡΠ° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ°, Π° ΠΌΠ°Π»ΠΊΠΎ ΠΏΡΠ΅Π΄ΠΈ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ΡΠΎ Π½Π° GCC 15.1 Π²Π΅ΡΠ΅ Π΅ Π±ΠΈΠ»Π° ΡΡΠ·Π΄Π°Π΄Π΅Π½Π° Π²Π΅ΡΡΠΈΡ GCC 16.0, Π½Π° ΠΊΠΎΡΡΠΎ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΎΡΠ½ΠΎΠ²Π°Π²Π°Π½ΠΎ ΡΠ»Π΅Π΄Π²Π°ΡΠΎΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ GCC 16.1.
ΠΡΠ½ΠΎΠ²Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ:
- ΠΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ Π½Π° Π΅Π·ΠΈΠΊΠ° C ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π΅ Π·Π°Π΄Π΅ΠΉΡΡΠ²Π°Π½ ΡΡΠ°Π½Π΄Π°ΡΡΡΡ C23 (ΠΏΡΠ΅Π³Π»Π΅Π΄ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½ΠΈΡΠ΅) Ρ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ GNU (Β«-std=gnu23Β»). ΠΡΠ΅Π΄ΠΈ ΡΠΎΠ²Π° ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅ Π΅ Π±ΠΈΠ» ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ ΡΡΠ°Π½Π΄Π°ΡΡΡΡ C17 β Β«-std=gnu17Β»). Π’ΠΎΠ²Π° ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ΅ Π΄Π° Π΄ΠΎΠ²Π΅Π΄Π΅ Π΄ΠΎ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΡΡΡΠ΅ΡΡΠ²ΡΠ²Π°ΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠΈ ΠΏΠΎΡΠ°Π΄ΠΈ Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠ°ΡΠ° nullptr, ΡΠΈΠΏΠ° _BitInt(n) ΠΈ ΠΊΠ»ΡΡΠΎΠ²ΠΈΡΠ΅ Π΄ΡΠΌΠΈ bool, true ΠΈ false, ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ²Π°Ρ Ρ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠΈΡΠ΅ Ρ Π΅Π΄Π½ΠΎΠΈΠΌΠ΅Π½Π½ΠΎ ΠΈΠΌΠ΅ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡΡΠ°.
- Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΡΠ° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠ° C23:
- ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΡΠ° Β«#embedΒ», ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½Π° Π·Π° Π²Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° Π±ΠΈΠ½Π°ΡΠ½ΠΈ ΡΠ΅ΡΡΡΡΠΈ Π² ΠΊΠΎΠ΄Π°.
- ΠΡΡΠΈΠ±ΡΡΡΡ Β«unsequencedΒ», ΡΠΈΠ³Π½Π°Π»ΠΈΠ·ΠΈΡΠ°Ρ, ΡΠ΅ ΡΠ΅Π·ΡΠ»ΡΠ°ΡΡΡ Π½Π΅ Π·Π°Π²ΠΈΡΠΈ ΠΎΡ ΡΠ΅Π΄Π° Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅.
- ΠΡΡΠΈΠ±ΡΡΡΡ Β«reproducibleΒ», ΡΠΊΠ°Π·Π²Π°Ρ, ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΡΡΠ° Π²ΠΈΠ½Π°Π³ΠΈ Π²ΡΡΡΠ° Π΅Π΄ΠΈΠ½ ΠΈ ΡΡΡ ΡΠ΅Π·ΡΠ»ΡΠ°Ρ ΠΏΡΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠ½ΠΈ Π²Ρ ΠΎΠ΄Π½ΠΈ Π΄Π°Π½Π½ΠΈ, Ρ.Π΅. Π½Π΅ Π·Π°Π²ΠΈΡΠΈ ΠΎΡ Π΄ΡΡΠ³ΠΈ ΡΠ°ΠΊΡΠΎΡΠΈ.
- Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΡΠ° Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ΅ Π½Π° Π±ΡΠ΄Π΅ΡΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡ C2Y (-std=c2y ΠΈ -std=gnu2y):
- ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΎΠ±ΡΠ²ΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Β«ifΒ», Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Β«if (int x = get ()) {β¦}Β».
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½Π΅ Π½Π° ΡΠΈΠΊΠ»ΠΈ, Π·Π° Π΄Π° ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΎΡΠ½Π°ΡΡΠΌΠ΅ ΠΊΡΠΌ ΡΡΡ Π² ΠΊΠΎΠ΄Π°. outer: for (int i = 0; i < IK; ++i) { switch (i) { case 1: break; // ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π° ΠΊΡΠΌ CONT1 case 2: break outer; // ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π° ΠΊΡΠΌ CONT2 } // CONT1 } // CONT2
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΈ Π½Π° ΡΠ΅Π»ΠΈ ΡΡΠΎΠΉΠ½ΠΎΡΡΠΈ Π² ΠΈΠ·ΡΠ°Π·ΠΈΡΠ΅ Β«caseΒ», Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Β«case 1 β¦ 10:Β».
- Π‘ΡΡΠΈΠΊΡΠΈ Β«iΒ» ΠΈ Β«jΒ» Π·Π° ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π²Π°Π½Π΅ Π½Π° Π²ΡΠΎΠ±ΡΠ°ΠΆΠ°Π΅ΠΌΠ°ΡΠ° ΡΠ°ΡΡ Π² ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΠΈ ΡΠΈΡΠ»Π°.
- ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΈΡΠ΅ Β«++Β» ΠΈ Β«βΒ» Ρ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΠΈ ΡΠΈΡΠ»Π°.
- ΠΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΡΠ° Β«_Generic(type, expr1, expr2, β¦)Β» Π·Π° ΠΈΠ·Π±ΠΎΡ Π½Π° ΠΈΠ·ΡΠ°Π· Π½Π° Π±Π°Π·Π°ΡΠ° Π½Π° ΡΠΈΠΏΠ° Π½Π° ΠΎΠΏΠ΅ΡΠ°Π½Π΄Π°.
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Π΄ΠΎΡΡΡΠΏ Π΄ΠΎ Π±Π°ΠΉΡΠΎΠ²ΠΈ ΠΌΠ°ΡΠΈΠ²ΠΈ ΠΊΠ°ΡΠΎ ΠΊΡΠΌ Π΄ΡΡΠ³ΠΈ ΡΠΈΠΏΠΎΠ²Π΅ ΠΎΠ±Π΅ΠΊΡΠΈ, ΠΊΠ°ΡΠΎ ΡΡΡΡΠΊΡΡΡΠΈ ΠΈ ΠΎΠ±Π΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ.
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° Β«alignofΒ» ΠΊΡΠΌ Π½Π΅ΠΏΡΠ»Π½ΠΈ ΠΌΠ°ΡΠΈΠ²ΠΈ (ΠΎΠ±ΡΠ²Π΅Π½ΠΈ Π±Π΅Π· ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½Π° ΡΠ°Π·ΠΌΠ΅Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ Β«int a[]Β»).
- ΠΠΎΠ±Π°Π²Π΅Π½ Π½ΠΎΠ² ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡ Π·Π° ΠΎΡΠΌΠΈΡΠ½ΠΈ, ΡΠ΅ΡΡΠ½Π°ΠΉΡΠ΅ΡΠΈΡΠ½ΠΈ ΠΈ ΡΠ½ΠΈΠ²Π΅ΡΡΠ°Π»Π½ΠΈ escape-ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡΠΈ Π½Π° ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ. ΠΠΌΠ΅ΡΡΠΎ β\uβ, β\xβ ΠΈ β\nnnβ ΡΠ° ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡΠΈ β\u{}β, β\o{}β ΠΈ β\x{}β, Π² ΠΊΠΎΠΈΡΠΎ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΏΠΎΡΠΎΡΠ²Π°Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ»Π΅Π½ Π±ΡΠΎΠΉ ΡΠΈΡΡΠΈ.
- ΠΠ³ΡΠ°Π΄Π΅Π½ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ β__builtin_stdc_rotate_leftβ ΠΈ β__builtin_stdc_rotate_rightβ.
- ΠΠΎΠ·Π²ΠΎΠ»Π΅Π½ΠΈ ΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Ρ Π½ΡΠ»Π΅Π²Π° Π΄ΡΠ»ΠΆΠΈΠ½Π° Π½Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ NULL (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, βsizeof(*p)β).
- Π ΠΏΡΠ΅Π΄Π½ΠΈΡ ΠΊΡΠ°ΠΉ Π·Π° Π΅Π·ΠΈΠΊΠ° C++ ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΡΠ°Π·Π²ΠΈΠ²Π°Π½ΠΈ Π·Π° Π±ΡΠ΄Π΅ΡΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡ C++26:
- ΠΡΠΎΠΌΠ΅Π½Π»ΠΈΠ² ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ βfriendβ (βfriend Tsβ¦β).
- ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΠΊΠ»ΡΡΠΎΠ²Π°ΡΠ° Π΄ΡΠΌΠ° βconstexprβ Ρ ΡΠ°Π·Π½ΠΎΠ²ΠΈΠ΄Π½ΠΎΡΡΡΠ° Π½Π° ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ° βnewβ (placement new) Π·Π° ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΎΠ±Π΅ΠΊΡ Π² ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π·Π°Π΄Π΅Π»Π΅Π½Π° ΠΏΠ°ΠΌΠ΅Ρ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ.
- ΠΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π³ΡΠ΅ΡΠΊΠ° ΠΏΡΠΈ ΠΈΠ·ΡΡΠΈΠ²Π°Π½Π΅ Π½Π° ΡΠΊΠ°Π·Π°ΡΠ΅Π» ΠΊΡΠΌ Π½Π΅ΠΏΡΠ»Π΅Π½ ΡΠΈΠΏ.
- ΠΠ±ΡΠ²Π΅Π½ Π·Π° ΠΎΡΡΠ°ΡΡΠ» ΡΠΈΠ½ΡΠ°ΠΊΡΠΈΡΡΡ Π½Π° ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Ρ ΠΌΠ½ΠΎΠ³ΠΎΡΠΎΡΠΈΠ΅ Π±Π΅Π· ΠΏΡΠ΅Π΄ΡΠ΅ΡΡΠ²Π°ΡΠ° Π·Π°ΠΏΠ΅ΡΠ°Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ΅ ΡΠΊΠ°Π·ΡΠ²Π° βvoid e(intβ¦)β Π²ΠΌΠ΅ΡΡΠΎ βvoid e(int, β¦)β).
- ΠΠ½Π΄Π΅ΠΊΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΠ°ΠΊΠ΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π² ΡΠ°Π±Π»ΠΎΠ½ΠΈ.
- ΠΡΡΠΈΠ±ΡΡΠΈ Π·Π° ΡΡΡΡΠΊΡΡΡΠΈΡΠ°Π½ΠΈ Π²ΠΊΠ»ΡΡΠ²Π°Π½ΠΈΡ;
- Π‘ΠΈΠ½ΡΠ°ΠΊΡΠΈΡ β= delete(βΠΏΡΠΈΡΠΈΠ½Π°β);β;
- ΠΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° β@β, β$β ΠΈ β`β Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΈΡ Π½Π°Π±ΠΎΡ ΠΎΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ.
- ΠΠ°Π±ΡΠ°Π½Π΅Π½ΠΎ Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΌΠ°ΠΊΡΠΎΡΠΈ Π·Π° ΠΎΠ±ΡΠ²ΡΠ²Π°Π½Π΅ Π½Π° ΠΌΠΎΠ΄ΡΠ»ΠΈ.
- ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΏΡΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΡΡΡΡΠΊΡΡΡΠΈΡΠ°Π½ΠΎ ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ (structured binding) ΠΊΠ°ΡΠΎ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π² ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΈΡΠ΅ if ΠΈ switch.
- Π‘ΠΏΡΡΠ½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΌΠ°ΡΠΈΠ²ΠΈ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, βint arr1[5]; int arr2[5]; bool same = arr1 == arr2β).
- ΠΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡΡ β#embedβ Π·Π° Π²Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° Π±ΠΈΠ½Π°ΡΠ½ΠΈ ΡΠ΅ΡΡΡΡΠΈ.
- ΠΠ±ΡΠ²Π΅Π½ Π·Π° ΠΎΡΡΠ°ΡΡΠ» ΡΠ°Π±Π»ΠΎΠ½Π΅Π½ ΠΊΠ»Π°Ρ is_trivial.
- ΠΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠ° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π² C++23:
- ΠΠ°Π±ΡΠ°Π½Π° Π½Π° Π½ΡΠΊΠΎΠΈ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΡΠ° βexportβ ΠΈ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° βexport {}β.
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠ΄ΡΠ»ΠΆΠ°Π²Π°Π½Π΅ Π½Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π½Π° ΠΆΠΈΠ²ΠΎΡ Π½Π° Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΈ ΠΎΠ±Π΅ΠΊΡΠΈ Π² ΡΠΈΠΊΠ»ΠΈ βforβ, ΠΎΠ±Ρ ΠΎΠ΄ΡΡΠΈ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ΠΈ.
- Π Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° libstdc++ Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΌΠΎΠ΄ΡΠ»ΠΈ std ΠΈ std.compat.
- ΠΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΎΡ β{0}β Π·Π° ΡΡΡΠ·ΠΈ Π² ΠΊΠΎΠ΄ Π½Π° C ΠΈ C++ Π²Π΅ΡΠ΅ Π½Π΅ Π³Π°ΡΠ°Π½ΡΠΈΡΠ° ΠΈΠ·ΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° Π²ΡΠΈΡΠΊΠΎΡΠΎ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅, Π° Π²ΠΎΠ΄ΠΈ Π΄ΠΎ Π½ΡΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΠΏΡΡΠ²ΠΈΡ Π΅Π»Π΅ΠΌΠ΅Π½Ρ Π½Π° ΡΡΡΠ·Π°. ΠΠ° ΠΈΠ·ΡΠΈΡΡΠ²Π°Π½Π΅ Π½Π° ΡΠ΅Π»ΠΈΡ ΡΡΡΠ· ΡΠ»Π΅Π΄Π²Π° Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° ΠΈΠ·ΡΠ°Π· β{}β, Π΄Π΅ΡΠΈΠ½ΠΈΡΠ°Π½ Π² ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° C23, ΠΈΠ»ΠΈ Π΄Π° ΡΠ΅ ΠΏΠΎΡΠΎΡΠΈ ΠΎΠΏΡΠΈΡΡΠ° β-fzero-init-padding-bits=unionsβ Π·Π° Π²ΡΠ·ΡΡΠ°Π½ΠΎΠ²ΡΠ²Π°Π½Π΅ Π½Π° ΡΡΠ°ΡΠΎΡΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅.
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° Π°ΡΡΠΈΠ±ΡΡΠ° Β«musttailΒ» ([[gnu::musttail]] ΠΈ [[clang::musttail]]) Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π·Π° Π³Π°ΡΠ°Π½ΡΠΈΡΠ°Π½ΠΈ Ρ Π²ΠΎΡΡΠΎΠ²ΠΈ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ. ΠΡΡΠΈΠ±ΡΡΡΡ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π° ΠΊΡΠΌ ΠΈΠ·ΡΠ°Π·ΠΈΡΠ΅ return, Π² ΠΊΠΎΠΈΡΠΎ ΡΠ΅ ΠΈΠ·Π²ΡΡΡΠ²Π° ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΡΠ΅ΠΊΡΡΠ°ΡΠ° ΡΡΠ½ΠΊΡΠΈΡ, ΠΈ Π³Π°ΡΠ°Π½ΡΠΈΡΠ°, ΡΠ΅ ΡΠ°ΠΊΠΎΠ²Π° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Ρ Π²ΠΎΡΡΠΎΠ²Π° ΡΠ΅ΠΊΡΡΡΠΈΡ, ΠΏΡΠΈ ΠΊΠΎΡΡΠΎ Π½Π΅ ΡΠ΅ Π·Π°Π΄Π΅Π»Ρ Π΄ΠΎΠΏΡΠ»Π½ΠΈΡΠ΅Π»Π½Π° ΠΏΠ°ΠΌΠ΅Ρ Π² ΡΡΠ΅ΠΊΠ° (ΠΈΠ·ΠΊΠ»ΡΡΠ²Π° ΡΠΈΡΠΊΠ° ΠΎΡ ΠΈΠ·ΡΠ΅ΡΠΏΠ²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° ΠΏΡΠΈ ΠΌΠ½ΠΎΠ³ΠΎ ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½ΠΈΡ).
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° Π°ΡΡΠΈΠ±ΡΡΠ° flag_enum ([[gnu::flag_enum]] ΠΈ [[clang::flag_enum]]) Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π°, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ ΠΏΡΠΈΠ»Π°Π³Π° ΠΊΡΠΌ ΠΈΠ·Π±ΡΠΎΡΠ²Π°Π½ΠΈΡ Π·Π° ΠΈΠ½Π΄ΠΈΠΊΠ°ΡΠΈΡ, ΡΠ΅ ΡΡΠ΄ΡΡΠΆΠ°Π½ΠΈΠ΅ΡΠΎ ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π² Π±ΠΈΡΠΎΠ²ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ (ΠΈΠ·ΠΊΠ»ΡΡΠ²Π° ΠΏΠΎΠΊΠ°Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π² ΡΠ΅ΠΆΠΈΠΌ Β«-WswitchΒ»).
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Π°ΡΡΠΈΠ±ΡΡΠ° Β«counted_byΒ», ΡΡΠ΅Π· ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΏΠΎΡΠΎΡΠΈ ΠΏΠΎΠ»Π΅ Π² ΡΡΡΡΠΊΡΡΡΠ° Ρ Π³ΡΠ²ΠΊΠ°ΡΠ² ΠΌΠ°ΡΠΈΠ², ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΠΎ Π±ΡΠΎΡ Π½Π° Π΅Π»Π΅ΠΌΠ΅Π½ΡΠΈΡΠ΅. ΠΡΡΠΈΠ±ΡΡΡΡ ΠΌΠΎΠΆΠ΅ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π° Π·Π° ΠΏΠΎΠ²ΠΈΡΠ°Π²Π°Π½Π΅ Π½Π° Π΅ΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡΠ° Π½Π° ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈΡΠ΅ Π·Π° ΠΈΠ·Π»ΠΈΠ·Π°Π½Π΅ ΠΈΠ·Π²ΡΠ½ Π³ΡΠ°Π½ΠΈΡΠΈΡΠ΅ Π½Π° Π±ΡΡΠ΅ΡΠ°.
- ΠΠ° ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ Π°ΡΡΠΈΠ±ΡΡΡΡ Β«nonnull_if_nonzeroΒ», ΠΊΠΎΠΉΡΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»Ρ, ΡΠ΅ Π½ΡΠΊΠΎΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈ Π½Π° ΡΡΠ½ΠΊΡΠΈΡΡΠ° Ρ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ ΠΌΠΎΠ³Π°Ρ Π΄Π° ΠΏΡΠΈΠ΅ΠΌΠ°Ρ ΡΡΠΎΠΉΠ½ΠΎΡΡ NULL, ΡΠ°ΠΌΠΎ Π°ΠΊΠΎ Π΄ΡΡΠ³ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Π΅ ΡΠ°Π²Π΅Π½ Π½Π° Π½ΡΠ»Π°.
- Π Π°Π·ΡΠ΅ΡΠ΅Π½ΠΎ Π΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈ Π°ΡΠ΅ΠΌΠ±Π»Π΅ΡΠ½ΠΈ Π²ΠΌΡΠΊΠ²Π°Π½ΠΈΡ Β«asm (β¦.)Β» ΠΈΠ·Π²ΡΠ½ ΡΡΠ½ΠΊΡΠΈΠΈΡΠ΅. Π Π°ΡΠ΅ΠΌΠ±Π»Π΅ΡΠ½ΠΈΡΠ΅ Π²ΠΌΡΠΊΠ²Π°Π½ΠΈΡ Π΅ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΠΏΡΠ΅Π·Π°ΠΏΠΈΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π² ΡΠ΅ΡΠ²Π΅Π½Π°ΡΠ° Π·ΠΎΠ½Π° Π½Π° ΡΡΠ΅ΠΊΠ° (ΠΎΠ±Π»Π°ΡΡ Π½Π° Π²ΡΡΡ Π° Π½Π° ΡΡΠ΅ΠΊΠ°).
- ΠΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠ΄ Π½Π° C++ Π΅ ΡΡΠΊΠΎΡΠ΅Π½ΠΎ Π±Π»Π°Π³ΠΎΠ΄Π°ΡΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΎ Ρ Π΅ΡΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°Π±Π»ΠΎΠ½ΠΈΡΠ΅.
- ΠΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠ° Π½ΠΎΠ²ΠΈ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ. Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Π²Π΅ΠΊΡΠΎΡΠΈΠ·Π°ΡΠΈΡ Π½Π° ΡΠΈΠΊΠ»ΠΈ, Π² ΠΊΠΎΠΈΡΠΎ ΠΈΠΌΠ° ΠΊΠΎΠ΄ Π·Π° ΠΏΡΠ΅ΠΆΠ΄Π΅Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΠΈΠ·Π»ΠΈΠ·Π°Π½Π΅ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΡΠ΅Π· ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° break ΠΈΠ»ΠΈ return), Π΄ΠΎΡΠΈ Π°ΠΊΠΎ ΡΠ°ΠΊΠΈΠ²Π° ΡΠΈΠΊΠ»ΠΈ ΠΌΠ°Π½ΠΈΠΏΡΠ»ΠΈΡΠ°Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½ΠΎ Π·Π°Π΄Π΅Π»Π΅Π½ΠΈ ΠΌΠ°ΡΠΈΠ²ΠΈ ΠΈΠ»ΠΈ Π±ΡΡΠ΅ΡΠΈ, ΡΠ°Π·ΠΌΠ΅ΡΡΡ Π½Π° ΠΊΠΎΠΈΡΠΎ Π½Π΅ Π΅ ΠΈΠ·Π²Π΅ΡΡΠ΅Π½ Π½Π° Π΅ΡΠ°ΠΏΠ° Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡ. ΠΡΠΈ ΡΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΎΠΏΡΠΈΡΡΠ° Β«-O2Β» Π΅ Π²ΠΊΠ»ΡΡΠ΅Π½Π° Π²Π΅ΠΊΡΠΎΡΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° Π½ΡΠΊΠΎΠΈ Π»Π΅ΡΠ½ΠΎ Π²Π΅ΠΊΡΠΎΡΠΈΠ·ΠΈΡΡΠ΅ΠΌΠΈ ΡΠΈΠΊΠ»ΠΈ, Π·Π° ΠΊΠΎΠΈΡΠΎ Π½ΡΠΌΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π·Π° Π±ΡΠΎΡ Π½Π° ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈΡΠ΅ (tripcount).
- ΠΠΎΠ±Π°Π²Π΅Π½ Π΅ ΡΠ΅ΠΆΠΈΠΌ Π½Π° ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ°Π»Π½Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ Π½Π° Π΅ΡΠ°ΠΏΠ° Π½Π° ΡΠ²ΡΡΠ·Π²Π°Π½Π΅ (LTO, Link-Time Optimization), ΠΊΠΎΠΉΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΎ Π½Π°ΠΌΠ°Π»ΡΠ²Π° Π²ΡΠ΅ΠΌΠ΅ΡΠΎ Π·Π° ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΠΈΡΠ°Π½Π΅ ΠΏΡΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° LTO Π² ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΠ³Π°ΡΠΎ ΡΠ° Π²Π½Π΅ΡΠ΅Π½ΠΈ Π½Π΅Π·Π½Π°ΡΠΈΡΠ΅Π»Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½ΠΈ Π² ΠΊΠΎΠ΄Π° (ΡΠ΅Π΄Π°ΠΊΡΠΈΡΠ°Π½Π° Π΅ Π΅Π΄Π½Π° ΡΡΠ½ΠΊΡΠΈΡ). ΠΠ° Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° ΠΈΠ½ΠΊΡΠ΅ΠΌΠ΅Π½ΡΠ°Π»Π½ΠΈΡ ΡΠ΅ΠΆΠΈΠΌ Π΅ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π° ΠΎΠΏΡΠΈΡΡΠ° Β«-flto-incrementalΒ».
- ΠΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΈΡΡΠ° Π½Π° ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈ Π²Ρ ΠΎΠ΄Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅. Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΎ Π΅ ΠΏΡΠΎΡΠ»Π΅Π΄ΡΠ²Π°Π½Π΅ Π½Π° Π½ΠΎΠΌΠ΅ΡΠ° Π½Π° ΠΊΠΎΠ»ΠΎΠ½ΠΈΡΠ΅, Π½Π°Π΄Π²ΠΈΡΠ°Π²Π°ΡΠΈ 4096. ΠΠΎΠ²ΠΈΡΠ΅Π½Π° Π΅ ΡΠΎΡΠ½ΠΎΡΡΡΠ° Π½Π° ΡΠΊΠ°Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π³ΡΠ΅ΡΠΊΠΈΡΠ΅ ΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡΡΠ° Π² ΠΌΠ½ΠΎΠ³ΠΎ Π³ΠΎΠ»Π΅ΠΌΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅.
- ΠΠΎΠ²ΠΈΡΠ΅Π½Π° Π΅ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ΠΎΡΡΠ΅ΡΠΈΡΠ΅ ΠΏΡΠΈ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ° Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΎΡΠΈΠ³ΡΡΠ΅Π½ΠΎ Π΅ ΠΏΠΎΠ΄ΡΠ΅ΡΡΠ°Π²Π°Π½Π΅ Π½Π° ΠΌΡΡΡΠΎΡΠΎ Π½Π° Π²ΡΠ·Π½ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ ΡΠΈΠΌΠ²ΠΎΠ»Π° Β«β οΈΒ», ΠΏΡΠΎΠΌΠ΅Π½Π΅Π½ Π΅ ΡΠΎΡΠΌΠ°ΡΡΡ Π½Π° ΠΈΠ·Ρ ΠΎΠ΄Π° ΠΏΡΠΈ Π³ΡΠ΅ΡΠΊΠΈ Π² ΡΠ°Π±Π»ΠΎΠ½ΠΈΡΠ΅ C++, Π΄ΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠ° ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ Π·Π° ΠΎΠΏΡΠΎΡΡΡΠ²Π°Π½Π΅ Π½Π° ΠΏΡΠ΅Ρ ΠΎΠ΄Π° ΠΊΡΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠ° C23, ΠΏΡΠ΅ΡΠ°Π±ΠΎΡΠ΅Π½Π° Π΅ ΡΠ²Π΅ΡΠ½Π°ΡΠ° ΡΡ Π΅ΠΌΠ°. ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ Π·Π° ΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅ Π½Π° Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠ° Π² Sarif ΡΠΎΡΠΌΠ°Ρ (-fdiagnostics-format=sarif-file).
- Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° libgdiagnostics, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π°ΡΠ° ΠΈΠ½ΡΠ΅Π³ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π½Π° GCC, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΎΡΠΎΡΠΌΠ»Π΅Π½ΠΈΠ΅ΡΠΎ Π½Π° Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΡΠ½ΠΈ ΡΡΠΎΠ±ΡΠ΅Π½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΌΠΎΠ³Π°Ρ Π΄Π° ΡΠ΅ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΈ Π·Π° ΡΠΈΡΠΈΡΠ°Π½Π΅, ΠΏΠΎΠ΄ΡΠ²Π΅ΡΠΊΠ° ΠΈ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠΈ Π·Π° ΠΊΠΎΡΠ΅ΠΊΡΠΈΠΈ).
- ΠΠΎΠ±Π°Π²Π΅Π½ΠΈ ΡΠ° ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ Β«-Wtrailing-whitespaceΒ» ΠΈ Β«-Wleading-whitespaceΒ» Π·Π° ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΎΡΡΠ°ΡΡΡΠ½ΠΈ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΈ Π² ΠΊΡΠ°Ρ Π½Π° ΡΠ΅Π΄ΠΎΠ²Π΅ΡΠ΅ ΠΈ ΠΈΠ·Π»ΠΈΡΠ½ΠΈ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΈ Π² Π½Π°ΡΠ°Π»ΠΎΡΠΎ Π½Π° ΡΠ΅Π΄ΠΎΠ²Π΅ΡΠ΅.
- ΠΠΎΠ±Π°Π²Π΅Π½ΠΎ Π΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Β«-Wheader-guardΒ» Π·Π° ΡΠ²Π΅Π΄ΠΎΠΌΡΠ²Π°Π½Π΅ Π·Π° ΠΏΡΠΎΠ±Π»Π΅ΠΌΠΈ Ρ ΠΌΠ°ΠΊΡΠΎΡΠΈ Π·Π° Π·Π°ΡΠΈΡΠ° Π½Π° Π·Π°Π³Π»Π°Π²Π½ΠΈ ΡΠ°ΠΉΠ»ΠΎΠ²Π΅, ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΡΠ²Π°ΡΠΈ ΠΏΠΎΠ²ΡΠΎΡΠ½ΠΎ Π²ΠΊΠ»ΡΡΠ²Π°Π½Π΅ Π½Π° Π·Π°Π³Π»Π°Π²Π½ΠΈΡ ΡΠ°ΠΉΠ».
- Π€ΡΠΎΠ½ΡΠ΅Π½Π΄ΡΡ Π·Π° Π΅Π·ΠΈΠΊ D Π΅ ΠΎΠ±Π½ΠΎΠ²Π΅Π½ Π΄ΠΎ Π²Π΅ΡΡΠΈΡ 2.111.0.
- Π ΡΡΠΎΠ½ΡΠ΅Π½Π΄Π° Π·Π° Π΅Π·ΠΈΠΊ Fortran Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Π±Π΅Π·Π·Π½Π°ΠΊΠΎΠ²ΠΈ ΡΠ΅Π»ΠΈ ΡΠΈΡΠ»Π°.
- ΠΠΊΠ»ΡΡΠ΅Π½ Π΅ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ Π·Π° Π΅Π·ΠΈΠΊ COBOL β gcobol, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ x86-64 ΠΈ AArch64, ΠΈ Π½Π΅ Π΅ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π·Π° ΡΠ°Π±ΠΎΡΠ° Π½Π° 32-Π±ΠΈΡΠΎΠ²ΠΈ ΡΠΈΡΡΠ΅ΠΌΠΈ. ΠΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΡΡ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ° ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡΡΠ° ISO/IEC 1989:2023 ΠΈ ΠΏΡΠ΅ΠΌΠΈΠ½Π°Π²Π° ΠΏΠΎΠ²Π΅ΡΠ΅ΡΠΎ ΡΠ΅ΡΡΠΎΠ²Π΅ Π½Π° NIST CCVS/85.
- ΠΡΠΎΠ΄ΡΠ»ΠΆΠ΅Π½Π° Π΅ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡΡΠ° Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠΈΡΠ΅ OpenMP 5.0, 5.1, 5.2 ΠΈ 6.0 (Open Multi-Processing), ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΠΈ API ΠΈ ΠΌΠ΅ΡΠΎΠ΄ΠΈ Π·Π° ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΡΠ°Π»Π΅Π»Π½ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈΡΠ°Π½Π΅ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΡΠ΄ΡΠ΅Π½ΠΈ ΠΈ Ρ ΠΈΠ±ΡΠΈΠ΄Π½ΠΈ (CPU+GPU/DSP) ΡΠΈΡΡΠ΅ΠΌΠΈ Ρ ΠΎΠ±ΡΠ° ΠΏΠ°ΠΌΠ΅Ρ ΠΈ Π±Π»ΠΎΠΊΠΎΠ²Π΅ Π·Π° Π²Π΅ΠΊΡΠΎΡΠΈΠ·Π°ΡΠΈΡ (SIMD). ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΌΠ΅ΡΠ°Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΈ ΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ tile, unroll, interop ΠΈ dispatch. ΠΠ° Π½ΡΠΊΠΎΠΈ GPU AMD ΠΈ NVIDIA Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠ½ΠΈΡΠΈΡΠΈΡΠ°Π½Π° ΡΠΏΠΎΠ΄Π΅Π»Π΅Π½Π° ΠΏΠ°ΠΌΠ΅Ρ (Π²ΠΊΠ»ΡΡΠ²Π° ΡΠ΅ ΡΡΠ΅Π· ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ unified_shared_memory Π² Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΡΠ° Β«requiresΒ»). ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΈΠ·ΡΠ°Π·Π° Β«self_mapsΒ».
- Π Π±Π΅ΠΊΡΡΠ΅Π½Π΄Π° Π·Π° Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΠ° AArch64 Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΡΠ° MinGW (aarch64-w64-mingw32). Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΡΠ° Π½Π°Π΄ 20 ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ ARM8 ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ΡΠΎ ACLE (Arm C Language Extensions). ΠΠ°ΠΏΡΠ°Π²Π΅Π½ΠΈ ΡΠ° ΠΌΠ½ΠΎΠ³ΠΎΠ±ΡΠΎΠΉΠ½ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠ° Π½Π° ΠΊΠΎΠ΄. ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° CPU:
- Apple A12 (apple-a12)
- Apple M1 (apple-m1)
- Apple M2 (apple-m2)
- Apple M3 (apple-m3)
- Arm Cortex-A520AE (cortex-a520ae)
- Arm Cortex-A720AE (cortex-a720ae)
- Arm Cortex-A725 (cortex-a725)
- Arm Cortex-R82AE (cortex-r82ae)
- Arm Cortex-X925 (cortex-x925)
- Arm Neoverse N3 (neoverse-n3)
- Arm Neoverse V3 (neoverse-v3)
- Arm Neoverse V3AE (neoverse-v3ae)
- FUJITSU-MONAKA (fujitsu-monaka)
- NVIDIA Grace (grace)
- NVIDIA Olympus (olympus)
- Qualcomm Oryon-1 (oryon-1)
- Π Π±ΡΠΊΠ΅Π½Π΄Π° Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄Π° Π·Π° GPU AMD Radeon (GCN) Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° libstdc++ ΠΈ Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° Π³Π΅Π½Π΅ΡΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° ΠΊΠΎΠ΄ Π·Π° ΡΡΡΡΠΎΠΉΡΡΠ²Π° ΠΎΡ ΡΠ΅ΡΠΈΡΡΠ° gfx9-generic, gfx10-3-generic ΠΈ gfx11-generic.
- Π Π±ΡΠΊΠ΅Π½Π΄Π° Π·Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° x86 Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π½Π° ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡΡΠ° Π½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° Intel AVX10.2, AMX-AVX512, AMX-FP8, AMX-MOVRS, AMX-TF32, AMX-TRANSPOSE ΠΈ MOVRS. ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° CPU Intel Diamond Rapids ΠΈ Xeon Phi.
- Π Π°Π·ΡΠΈΡΠ΅Π½ΠΈ Π²ΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π·Π° Π±ΡΠΊΠ΅Π½Π΄ΠΎΠ²Π΅ΡΠ΅ Π½Π° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈΡΠ΅ LoongArch ΠΈ AVR.
- ΠΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π·Π° ΡΠ΅Π»Π΅Π²Π°ΡΠ° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° nios2, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° Π² ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈΡΠ΅ Nios II, Π΅ ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π°ΡΠ°. ΠΠ±ΡΠ²Π΅Π½Π° Π΅ Π·Π° ΠΎΡΡΠ°ΡΡΠ»Π° ΠΈ ΡΠ΅ Π±ΡΠ΄Π΅ ΠΏΡΠ΅ΠΌΠ°Ρ Π½Π°ΡΠ° Π² ΡΠ»Π΅Π΄Π²Π°ΡΠ°ΡΠ° Π·Π½Π°ΡΠΈΡΠ΅Π»Π½Π° Π²Π΅ΡΡΠΈΡ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° ABI ILP32 (-mabi=ilp32) Π² ΠΏΠΎΡΡΠ° Π·Π° AArch64.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru
