Π‘Π»Π΅Π΄ ΠΊΠ°ΡΠΎ Π΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ΅Π½ Π² ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ΅Π½ΠΈΠ΅ Π½Π° Π³ΠΎΠ΄ΠΈΠ½Π°, Π±Π΅ ΠΏΡΠ±Π»ΠΈΠΊΡΠ²Π°Π½ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡ ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠΈ 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; // jumps to CONT1 case 2: break outer; // jumps to 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
