ΠΠΎΡΠ»Π΅ Π³ΠΎΠ΄Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ ΡΠ΅Π»ΠΈΠ· ΡΠ²ΠΎΠ±ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡΠ° ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠ² GCC 14.1, ΠΏΠ΅ΡΠ²ΡΠΉ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ Π²ΡΠΏΡΡΠΊ Π² Π½ΠΎΠ²ΠΎΠΉ Π²Π΅ΡΠΊΠ΅ GCC 14.x. Π ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ Π½ΠΎΠ²ΠΎΠΉ ΡΡ Π΅ΠΌΠΎΠΉ Π½ΡΠΌΠ΅ΡΠ°ΡΠΈΠΈ Π²ΡΠΏΡΡΠΊΠΎΠ², Π²Π΅ΡΡΠΈΡ 14.0 ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»Π°ΡΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ, Π° Π½Π΅Π·Π°Π΄ΠΎΠ»Π³ΠΎ Π΄ΠΎ Π²ΡΡ ΠΎΠ΄Π° GCC 14.1 ΡΠΆΠ΅ ΠΎΡΠ²Π΅ΡΠ²ΠΈΠ»Π°ΡΡ Π²Π΅ΡΠΊΠ° GCC 15.0, Π½Π° Π±Π°Π·Π΅ ΠΊΠΎΡΠΎΡΠΎΠΉ Π±ΡΠ΄Π΅Ρ ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΡΠ΅Π»ΠΈΠ· GCC 15.1.
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ:
- ΠΠ½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠ°ΡΡΠΈΡΠ΅Π½Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π΄Π»Ρ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° ΠΊΠΎΠ΄Π° Π½Π° ΡΠ·ΡΠΊΠ΅ Π‘ΠΈ, Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ ΡΠ΅ΡΠ΅Π· ΠΎΠΏΡΠΈΡ «-fanalyzer» (ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· Π΄Π»Ρ ΡΠ·ΡΠΊΠ° Π‘++ ΠΏΠΎΠΊΠ° Π½Π΅ Π΄ΠΎΠ²Π΅Π΄ΡΠ½ Π΄ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°). Π£ΡΠΈΠ»Π΅Π½ Π°Π½Π°Π»ΠΈΠ· ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΡΠΎ ΡΡΡΠΎΠΊΠ°ΠΌΠΈ ΠΈ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π°Π»ΠΈΡΠΈΡ Π·Π°Π²Π΅ΡΡΠ°ΡΡΠ΅Π³ΠΎ ΡΡΡΠΎΠΊΡ Π½ΡΠ»Π΅Π²ΠΎΠ³ΠΎ ΡΠΈΠΌΠ²ΠΎΠ»Π°. ΠΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ Π½ΠΎΠ²ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ «-Wanalyzer-infinite-loop» Π΄Π»Ρ Π²ΡΡΠ²Π»Π΅Π½ΠΈΡ Π±Π΅ΡΠΊΠΎΠ½Π΅ΡΠ½ΡΡ
ΡΠΈΠΊΠ»ΠΎΠ². ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΡΠ΅ΡΠΈΡ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΠΉ «-Wanalyzer-tainted-*» Π΄Π»Ρ Π²ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΎΠΉ Π²Ρ
ΠΎΠ΄Π½ΡΡ
Π΄Π°Π½Π½ΡΡ
. Π Π°ΡΡΠΈΡΠ΅Π½Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡ «-Wanalyzer-out-of-bounds» Π΄Π»Ρ Π²ΡΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ Π±ΡΡΠ΅ΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π΄ΠΈΠ°Π³ΡΠ°ΠΌΠΌΡ Ρ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠ΅ΠΉ ΡΠΎΡΡΠΎΡΠ½ΠΈΡ, ΠΏΡΠΈΠ²ΠΎΠ΄ΡΡΠ΅Π³ΠΎ ΠΊ ΠΏΠ΅ΡΠ΅ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° Π½ΠΎΠ²Π°Ρ ΡΠ±ΠΎΡΠΎΡΠ½Π°Ρ ΠΎΠΏΡΠΈΡ «—enable-host-pie» Π΄Π»Ρ ΡΠ±ΠΎΡΠΊΠΈ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° Π² ΡΠ΅ΠΆΠΈΠΌΠ΅ PIE (Position Independent Executable), Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠΏΡΠΈΡ «—enable-host-bind-now» Π΄Π»Ρ ΡΠ²ΡΠ·ΡΠ²Π°Π½ΠΈΡ Ρ ΠΎΠΏΡΠΈΡΠΌΠΈ «-Wl,-z,now».
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° Π½ΠΎΠ²Π°Ρ ΠΎΠΏΡΠΈΡ «-fhardened», Π²ΠΊΠ»ΡΡΠ°ΡΡΠ°Ρ ΡΠ»Π°Π³ΠΈ Π΄Π»Ρ ΡΡΠΈΠ»Π΅Π½ΠΈΡ Π±Π΅Π·ΠΎΠΏΠ°ΡΠ½ΠΎΡΡΠΈ (-D_FORTIFY_SOURCE=3 -D_GLIBCXX_ASSERTIONS -ftrivial-auto-var-init=zero -fPIE -pie -Wl,-z,relro,-z,now -fstack-protector-strong -fstack-clash-protection -fcf-protection=full).
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΎΠΏΡΠΈΡ «-fharden-control-flow-redundancy» Π΄Π»Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ Π² ΠΊΠΎΠ½Π΅Ρ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΊΠΎΠ΄Π° Π΄Π»Ρ Π²ΡΡΠ²Π»Π΅Π½ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΡΠΎΡΠΌ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΏΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΌΠΎΠ³ΡΡ ΠΏΡΠΈΠ²Π΅ΡΡΠΈ ΠΊ Π½Π°ΡΡΡΠ΅Π½ΠΈΡ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΠΎΡΡΠ΄ΠΊΠ° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ (control flow) Π² ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ΅ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΡΠΊΡΠΏΠ»ΠΎΠΈΡΠΎΠ², ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΠΈΡ Ρ ΡΠ°Π½ΠΈΠΌΡΠ΅ Π² ΠΏΠ°ΠΌΡΡΠΈ ΡΠΊΠ°Π·Π°ΡΠ΅Π»ΠΈ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΠΈΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π² ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Ρ ΡΡΠ½ΠΊΡΠΈΠΉ.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²ΡΠΉ Π°ΡΡΠΈΠ±ΡΡ ΡΠΈΠΏΠΎΠ² «hardbool», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠΉ ΠΏΠ΅ΡΠ΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΡΠΎΠΏΠΎΡΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ Ρ ΠΏΡΠΈΠ·Π½Π°ΠΊΠ°ΠΌΠΈ true ΠΈ false Π΄Π»Ρ Π·Π°ΡΡΡΠ΄Π½Π΅Π½ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π²ΠΈΠ΄ΠΎΠ² Π°ΡΠ°ΠΊ.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²ΡΠΉ Π°ΡΡΠΈΠ±ΡΡ ΡΠΈΠΏΠΎΠ² strub Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΎΠ±Π½ΡΠ»Π΅Π½ΠΈΠ΅ΠΌ ΠΊΠ°Π΄ΡΠΎΠ² ΡΡΠ΅ΠΊΠ° Ρ Π΄Π°Π½Π½ΡΠΌΠΈ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΏΠΎΡΠ»Π΅ Π²ΡΡ ΠΎΠ΄Π° ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈΠ»ΠΈ ΡΡΠ°Π±Π°ΡΡΠ²Π°Π½ΠΈΡ ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΡ.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΎΠΏΡΠΈΡ -finline-stringops Π΄Π»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ inline-ΡΠ°ΡΠΊΡΡΡΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΉ memcmp, memcpy, memmove ΠΈ memset, Π΄Π°ΠΆΠ΅ ΠΊΠΎΠ³Π΄Π° ΡΡΠΎ Π½Π΅ Π½ΡΠΆΠ½ΠΎ Π΄Π»Ρ ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ.
- ΠΠΎΠ±Π°Π²Π»Π΅Π½ Π½ΠΎΠ²ΡΠΉ Π°ΡΡΠΈΠ±ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ null_terminated_string_arg(PARAM_IDX) Π΄Π»Ρ ΠΏΠΎΠΌΠ΅ΡΠΊΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΡΡΠ°ΠΊΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΊ ΡΡΡΠΎΠΊΠΈ, Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΠΈΠ΅ΡΡ Π½ΡΠ»Π΅Π²ΡΠΌ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠΌ.
- Π Π²Π΅ΠΊΡΠΎΡΠΈΠ·Π°ΡΠΎΡΠ΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π²Π΅ΠΊΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠΈΠΊΠ»ΠΎΠ², ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ «break».
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° Π½Π°ΡΠ°Π»ΡΠ½Π°Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ OpenMP 6.0 (Open Multi-Processing) ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ΅Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠ² OpenMP 5.0, 5.1 ΠΈ 5.2, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΡ API ΠΈ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΏΡΠΈΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΡΠ΄Π΅ΡΠ½ΡΡ ΠΈ Π³ΠΈΠ±ΡΠΈΠ΄Π½ΡΡ (CPU+GPU/DSP) ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Ρ ΠΎΠ±ΡΠ΅ΠΉ ΠΏΠ°ΠΌΡΡΡΡ ΠΈ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ Π²Π΅ΠΊΡΠΎΡΠΈΠ·Π°ΡΠΈΠΈ (SIMD).
- Π£Π»ΡΡΡΠ΅Π½Π° ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΉ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ OpenACC 2.7 ΠΈ 3.2, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΠΈΡ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ Π²ΡΠ½ΠΎΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ (offloading) Π½Π° GPU ΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ NVIDIA PTX.
- ΠΠ»Ρ C, C++ ΠΈ Objective-C ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ «__has_feature» ΠΈ «__has_extension», ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ Π² Clang.
- Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΡΠ΅ Π² Π±ΡΠ΄ΡΡΠ΅ΠΌ Π‘ΠΈ-ΡΡΠ°Π½Π΄Π°ΡΡΠ΅ C23, ΡΠ°ΠΊΠΈΠ΅ ΠΊΠ°ΠΊ ΡΠΈΠΏΡ «_BitInt (N)» ΠΈ «unsigned _BitInt (N))». Π‘ΡΡΡΠΊΡΡΡΡ, ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½Π΅Π½ΠΈΡ ΠΈ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½ΠΈΡ ΡΠ°Π·ΡΠ΅ΡΠ΅Π½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΡΠ°Π·Π° Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΡΠΌ Ρ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ ΡΠ΅ΠΌ ΠΆΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΡΠΌ ΠΈ ΠΏΠΎΠ²ΡΠΎΡΡΡΡΠΈΠΌΡΡ ΡΠ΅Π³ΠΎΠΌ. ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΎΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΠΉΠ»Π° stdckdint.h. ΠΠ»Ρ Π²ΠΊΠ»ΡΡΠ΅Π½ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² C23 ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Ρ ΡΠ»Π°Π³ΠΈ «-std=c23», «-std=gnu23» ΠΈ «-Wc11-c23-compat».
- ΠΠ»Ρ ΡΠ·ΡΠΊΠ° Π‘ΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΎ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅ «#pragma GCC novector», ΠΎΡΠΊΠ»ΡΡΠ°ΡΡΠ΅Π΅ Π²Π΅ΠΊΡΠΎΡΠΈΠ·Π°ΡΠΈΡ Π°Π½ΠΎΡΠΈΡΠΎΠ²Π°Π½Π½ΡΡ ΡΠΈΠΊΠ»ΠΎΠ².
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ ΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ C++23. ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΠ° «Deducing this», ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅Π³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π² ΡΠ°Π±Π»ΠΎΠ½Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Ρ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠΌ «this» ΠΈ Π΄Π°ΡΡΠ΅Π³ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΠ· ΡΡΠ½ΠΊΡΠΈΠΈ ΠΊΠ»Π°ΡΡΠ° ΡΠ·Π½Π°ΡΡ ΠΊΠ°ΡΠ΅Π³ΠΎΡΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΠΎΠΉ), Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΡΠ° ΡΡΠ½ΠΊΡΠΈΡ Π²ΡΠ·Π²Π°Π½Π°. Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΠ΅, Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠΈ Ρ ΠΊΠΎΡΠΎΡΡΠΌ Π²ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ, Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ Ρ ΠΏΡΠΈΠ·Π½Π°ΠΊΠΎΠΌ consteval ΡΠΎΠΆΠ΅ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ consteval, Ρ.Π΅. Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΡΠΈ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. ΠΡΠ»Π°Π±Π»Π΅Π½Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΡΠ΅Π±ΠΎΠ²Π°Π½ΠΈΡ ΠΊ «constexpr».
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ Π±ΡΠ΄ΡΡΠΈΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ C++2Ρ (C++26). ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΡΠΎΠΊΠΎΠ²ΡΡ Π»ΠΈΡΠ΅ΡΠ°Π»ΠΎΠ² Π² ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡΠ΅, Π² ΠΊΠΎΡΠΎΡΠΎΠΌ ΠΎΠ½ΠΈ Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π΄Π»Ρ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠ°ΡΡΠΈΠ²Π° ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΠΈ Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π°ΡΡ Π² ΡΠ΅Π·ΡΠ»ΡΡΠΈΡΡΡΡΠΈΠΉ ΠΊΠΎΠ΄, Π° ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ Π΄Π»Ρ Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΈ ΠΏΡΠ΅ΠΏΡΠΎΡΠ΅ΡΡΠΈΠ½Π³Π°. ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ°Π·Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ -Π·Π°ΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»Π΅ΠΉ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ «_» Π² ΠΎΠ΄Π½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Π²ΠΈΠ΄ΠΈΠΌΠΎΡΡΠΈ. ΠΠ΅ΡΠ΅Π²Π΅Π΄Π΅Π½ΠΎ Π² ΡΠ°Π·ΡΡΠ΄ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠ²Π½ΡΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠΉ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»ΡΠ΅ΠΌΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π² Π°ΡΠΈΡΠΌΠ΅ΡΠΈΡΠ΅ΡΠΊΠΈΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡΡ .
- Π libstdc++ ΡΠ»ΡΡΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠ² C++20, C++23 ΠΈ C++26.
- Π ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ΅ Π΄Π»Ρ ΡΠ·ΡΠΊΠ° Fortran Π½Π°ΡΠ°Π»Π°ΡΡ ΡΠ°Π±ΠΎΡΠ° Π½Π°Π΄ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΎΠΉ ΡΡΠ°Π½Π΄Π°ΡΡΠ° Fortran 2023 (-std=f2023).
- ΠΠ±ΡΡΠ²Π»Π΅Π½Π° ΡΡΡΠ°ΡΠ΅Π²ΡΠ΅ΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ GCC, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠ΅Π³ΠΎ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π³ΠΈΠ±ΠΊΠΈΠΉ ΡΠ»Π΅ΠΌΠ΅Π½Ρ-ΠΌΠ°ΡΡΠΈΠ² (ΠΌΠ°ΡΡΠΈΠ² Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ°, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, «int b[]») Π½Π΅ Π² ΡΠ°ΠΌΠΎΠΌ ΠΊΠΎΠ½ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ (Flexible Array Members). ΠΠ°ΡΡΠΈΠ² Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ½Π½ΠΎΠ³ΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π² Π΄Π°Π»ΡΠ½Π΅ΠΉΡΠ΅ΠΌ ΠΌΠΎΠΆΠ½ΠΎ Π±ΡΠ΄Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΊΠΎΠ½ΡΠ΅ ΡΡΡΡΠΊΡΡΡΡ.
- Π Π±ΡΠΊΠ΅Π½Π΄Π΅ Π΄Π»Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ AArch64 ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° CPU Ampere-1B (ampere1b), Arm Cortex-A520 (cortex-a520), Arm Cortex-A720 (cortex-a720), Arm Cortex-X4 (cortex-x4) ΠΈ Microsoft Cobalt-100 (cobalt-100). ΠΠ»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π² ΠΎΠΏΡΠΈΡΡ «-mcpu=» ΠΈ «-mtune=» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ Π½ΠΎΠ²ΡΠ΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΡ CPU generic, generic-armv8-a ΠΈ generic-armv9-a. ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ Arm SME ΠΈ SME2 (Streaming Matrix Extensions). Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ ΡΠΏΠ΅ΡΠΈΡΠΈΡΠ½ΡΠ΅ Π΄Π»Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ AArch64 ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΠΈ.
- Π Π±ΡΠΊΠ΅Π½Π΄Π΅ Π΄Π»Ρ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ARM Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° CPU Cortex-M52 (cortex-m52 Π² ΠΎΠΏΡΠΈΡΡ «-mcpu=» ΠΈ «-mtune=»).
- Π Π±ΡΠΊΠ΅Π½Π΄Π΅ Π³Π΅Π½Π΅ΡΠ°ΡΠΈΠΈ ΠΊΠΎΠ΄Π° Π΄Π»Ρ GPU AMD Radeon (GCN) ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° GPU AMD Radeon gfx90c (GCN5), gfx1030, gfx1036 (RDNA2), gfx1100 ΠΈ gfx1103 (RDNA3). ΠΠΎΠ²ΡΡΠ΅Π½Π° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π΄Π»Ρ ΡΡΡΡΠΎΠΉΡΡΠ² AMD ΡΠ΅ΡΠΈΠΉ MI100 ΠΈ MI200. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π°ΠΊΡΠΈΠ²ΠΈΡΠΎΠ²Π°Π½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΡΡΡΡΠΎΠΉΡΡΠ² gfx900 (Vega).
- Π Π±ΡΠΊΠ΅Π½Π΄ Π΄Π»Ρ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡ x86 Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠΉ Π°ΡΡ
ΠΈΡΠ΅ΠΊΡΡΡΡ Π½Π°Π±ΠΎΡΠ° ΠΊΠΎΠΌΠ°Π½Π΄ Intel AVX10.1, Intel APX (ΡΠ°ΡΡΠΈΡΠ½ΠΎ), Intel AVX-VNNI-INT16, Intel SHA512, Intel SM3, Intel SM4, Intel USER_MSR.
ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° CPU AMD Π½Π° Π±Π°Π·Π΅ ΡΠ΄ΡΠ° Zen 5 (-march=znver5), Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ² Intel Clearwater Forest (-march=clearwaterforest), Arrow Lake (-march=arrowlake), Arrow Lake S (-march=arrowlake-s), Lunar Lake (-march=lunarlake) ΠΈ Panther Lake (-march=pantherlake). ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΎΠΏΡΠΈΡ «-m[no-]evex512» Π΄Π»Ρ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ 512-Π±ΠΈΡΠ½ΡΡ Π²Π΅ΠΊΡΠΎΡΠΎΠ² (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ ΠΏΡΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ΅ AVX512F. ΠΠ±ΡΡΠ²Π»Π΅Π½Π° ΡΡΡΠ°ΡΠ΅Π²ΡΠ΅ΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° CPU Intel Xeon Phi.
- Π Π°ΡΡΠΈΡΠ΅Π½Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π±ΡΠΊΠ΅Π½Π΄ΠΎΠ² Π΄Π»Ρ ΠΏΠ»Π°ΡΡΠΎΡΠΌ LoongArch, AVR ΠΈ RISC-V.
- Π Π°ΡΡΠΈΡΠ΅Π½Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π²ΡΠ²ΠΎΠ΄Π° Π΄ΠΈΠ°Π³Π½ΠΎΡΡΠΈΠΊΠΈ Π² ΡΠΎΡΠΌΠ°ΡΠ΅ SARIF, ΠΎΡΠ½ΠΎΠ²Π°Π½Π½ΠΎΠΌ Π½Π° JSON. Π€ΠΎΡΠΌΠ°Ρ SARIF ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π° (GCC -fanalyzer), Π° ΡΠ°ΠΊΠΆΠ΅ Π΄Π»Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ ΡΠ²Π΅Π΄Π΅Π½ΠΈΠΉ ΠΎ ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π΅Π½ΠΈΡΡ ΠΈ ΠΎΡΠΈΠ±ΠΊΠ°Ρ .
- ΠΠ΅ΡΠ΅Π²Π΅Π΄Π΅Π½Π° Π² ΡΠ°Π·ΡΡΠ΄ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΡ ΠΈ Π±ΡΠ΄Π΅Ρ ΡΠ΄Π°Π»Π΅Π½Π° Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ ΡΠ΅Π»ΠΈΠ·Π΅ GCC ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ΅Π»Π΅Π²ΡΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡ ia64 ΠΈ nios2, ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΠΌΡΡ Π² ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°Ρ Intel Itanium ΠΈ Nios II.
ΠΡΡΠΎΡΠ½ΠΈΠΊ: opennet.ru