Π‘Π»Π΅Π΄ ΡΠ΅ΡΡ ΠΌΠ΅ΡΠ΅ΡΠ° Π½Π° ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° Π±Π΅ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π΅Π½ΠΎ ΠΈΠ·Π΄Π°Π½ΠΈΠ΅ΡΠΎ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ° LLVM 15.0 - GCC-ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌ (ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠΈ, ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΎΡΠΈ ΠΈ Π³Π΅Π½Π΅ΡΠ°ΡΠΎΡΠΈ Π½Π° ΠΊΠΎΠ΄), ΠΊΠΎΠΉΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΠΈΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΈ Π² ΠΌΠ΅ΠΆΠ΄ΠΈΠ½Π΅Π½ Π±ΠΈΡΠΊΠΎΠ΄ Π½Π° RISC-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈ Π²ΠΈΡΡΡΠ°Π»Π½ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ (Π²ΠΈΡΡΡΠ°Π»Π½Π° ΠΌΠ°ΡΠΈΠ½Π° ΠΎΡ Π½ΠΈΡΠΊΠΎ Π½ΠΈΠ²ΠΎ Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Π·Π° ΠΌΠ½ΠΎΠ³ΠΎΡΡΠ΅ΠΏΠ΅Π½Π½Π° ΠΎΠΏΡΠΈΠΌΠΈΠ·Π°ΡΠΈΡ). ΠΠ΅Π½Π΅ΡΠΈΡΠ°Π½ΠΈΡΡ ΠΏΡΠ΅Π²Π΄ΠΎΠΊΠΎΠ΄ ΠΌΠΎΠΆΠ΅ Π΄Π° Π±ΡΠ΄Π΅ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ²Π°Π½ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° JIT ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡ Π² ΠΌΠ°ΡΠΈΠ½Π½ΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΎ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠ°ΡΠ°.
ΠΡΠ½ΠΎΠ²Π½ΠΈ ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² Clang 15.0:
- ΠΠ° ΡΠΈΡΡΠ΅ΠΌΠΈ, Π±Π°Π·ΠΈΡΠ°Π½ΠΈ Π½Π° Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° x86, Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ ΡΠ»Π°Π³ΡΡ β-fzero-call-used-regsβ, ΠΊΠΎΠΉΡΠΎ Π³Π°ΡΠ°Π½ΡΠΈΡΠ°, ΡΠ΅ Π²ΡΠΈΡΠΊΠΈ CPU ΡΠ΅Π³ΠΈΡΡΡΠΈ, ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ΠΈ Π²ΡΠ² ΡΡΠ½ΠΊΡΠΈΡΡΠ°, ΡΠ΅ Π½ΡΠ»ΠΈΡΠ°Ρ, ΠΏΡΠ΅Π΄ΠΈ Π΄Π° Π²ΡΡΠ½Π°Ρ ΠΊΠΎΠ½ΡΡΠΎΠ»Π° ΠΎΡ ΡΡΠ½ΠΊΡΠΈΡΡΠ°. Π’Π°Π·ΠΈ ΠΎΠΏΡΠΈΡ Π²ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ²Π° Π΄Π° Π·Π°ΡΠΈΡΠΈΡΠ΅ ΡΡΠ΅ΡΡ ΠΈΠ·ΡΠΈΡΠ°Π½Π΅ Π½Π° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ Π΄Π° Π½Π°ΠΌΠ°Π»ΠΈΡΠ΅ Π±ΡΠΎΡ Π½Π° Π±Π»ΠΎΠΊΠΎΠ²Π΅ΡΠ΅, ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈ Π·Π° ΠΈΠ·Π³ΡΠ°ΠΆΠ΄Π°Π½Π΅ Π½Π° ROP (Return-Oriented Programming) Π΄ΠΆΠ°Π΄ΠΆΠΈ Π² Π΅ΠΊΡΠΏΠ»ΠΎΠΉΡΠΈ Ρ ΠΏΡΠΈΠ±Π»ΠΈΠ·ΠΈΡΠ΅Π»Π½ΠΎ 20%.
- Π Π΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΎ Π΅ ΡΠ°Π½Π΄ΠΎΠΌΠΈΠ·ΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ°Π·ΠΏΠΎΠ»Π°Π³Π°Π½Π΅ΡΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅ΡΡΠ° Π½Π° ΡΡΡΡΠΊΡΡΡΠΈ Π·Π° C ΠΊΠΎΠ΄, ΠΊΠΎΠ΅ΡΠΎ ΡΡΠ»ΠΎΠΆΠ½ΡΠ²Π° ΠΈΠ·Π²Π»ΠΈΡΠ°Π½Π΅ΡΠΎ Π½Π° Π΄Π°Π½Π½ΠΈ ΠΎΡ ΡΡΡΡΠΊΡΡΡΠΈΡΠ΅ Π² ΡΠ»ΡΡΠ°ΠΉ Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ Π½Π° ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ. Π Π°Π½Π΄ΠΎΠΌΠΈΠ·ΠΈΡΠ°Π½Π΅ΡΠΎ ΡΠ΅ Π²ΠΊΠ»ΡΡΠ²Π° ΠΈ ΠΈΠ·ΠΊΠ»ΡΡΠ²Π° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° Π°ΡΡΠΈΠ±ΡΡΠΈΡΠ΅ randomize_layout ΠΈ no_randomize_layout ΠΈ ΠΈΠ·ΠΈΡΠΊΠ²Π° Π·Π°Π΄Π°Π²Π°Π½Π΅ Π½Π° ΡΠ΅ΠΌΠ΅ Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠ»Π°Π³Π° "-frandomize-layout-seed" ΠΈΠ»ΠΈ "-frandomize-layout-seed-file".
- ΠΠΎΠ±Π°Π²Π΅Π½ Π΅ ΡΠ»Π°Π³ΡΡ "-fstrict-flex-arrays=", Ρ ΠΊΠΎΠΉΡΠΎ ΠΌΠΎΠΆΠ΅ΡΠ΅ Π΄Π° ΠΊΠΎΠ½ΡΡΠΎΠ»ΠΈΡΠ°ΡΠ΅ Π³ΡΠ°Π½ΠΈΡΠΈΡΠ΅ Π·Π° Π΅Π»Π΅ΠΌΠ΅Π½ΡΠ° Π½Π° Π³ΡΠ²ΠΊΠ°Π²ΠΈΡ ΠΌΠ°ΡΠΈΠ² Π² ΡΡΡΡΠΊΡΡΡΠΈΡΠ΅ (Flexible Array Members, ΠΌΠ°ΡΠΈΠ² Ρ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ ΡΠ°Π·ΠΌΠ΅Ρ Π² ΠΊΡΠ°Ρ Π½Π° ΡΡΡΡΠΊΡΡΡΠ°ΡΠ°). ΠΠΎΠ³Π°ΡΠΎ Π΅ Π·Π°Π΄Π°Π΄Π΅Π½ΠΎ Π½Π° 0 (ΠΏΠΎ ΠΏΠΎΠ΄ΡΠ°Π·Π±ΠΈΡΠ°Π½Π΅), ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡΡ Π΅Π»Π΅ΠΌΠ΅Π½Ρ ΠΎΡ ΡΡΡΡΠΊΡΡΡΠ°ΡΠ° Ρ ΠΌΠ°ΡΠΈΠ² Π²ΠΈΠ½Π°Π³ΠΈ ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π° ΠΊΠ°ΡΠΎ Π³ΡΠ²ΠΊΠ°Π² ΠΌΠ°ΡΠΈΠ², 1 - ΡΠ°ΠΌΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠΈΡΠ΅ [], [0] ΠΈ [1] ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Ρ ΠΊΠ°ΡΠΎ Π³ΡΠ²ΠΊΠ°Π² ΠΌΠ°ΡΠΈΠ², 2 - ΡΠ°ΠΌΠΎ ΡΠ°Π·ΠΌΠ΅ΡΠΈΡΠ΅ [] ΠΈ [0] ΡΠ΅ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ²Π°Ρ ΠΊΠ°ΡΠΎ Π³ΡΠ²ΠΊΠ°Π² ΠΌΠ°ΡΠΈΠ².
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° C-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΈΡ Π΅Π·ΠΈΠΊ HLSL (High-Level Shader Language), ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π² DirectX Π·Π° ΠΏΠΈΡΠ°Π½Π΅ Π½Π° ΡΠ΅ΠΉΠ΄ΡΡΠΈ.
- ΠΠΎΠ±Π°Π²Π΅Π½ Π΅ β-Warray-parameterβ, Π·Π° Π΄Π° ΠΏΡΠ΅Π΄ΡΠΏΡΠ΅ΠΆΠ΄Π°Π²Π° Π·Π° Π·Π°ΠΌΠ΅Π½ΡΡΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Ρ Π½Π΅ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΈ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΠΈ Π½Π° Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠΈ, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΌΠ°ΡΠΈΠ²ΠΈ Ρ ΡΠΈΠΊΡΠΈΡΠ°Π½Π° ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²Π° Π΄ΡΠ»ΠΆΠΈΠ½Π°.
- ΠΠΎΠ΄ΠΎΠ±ΡΠ΅Π½Π° ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡ Ρ MSVC. ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° "#pragma ΡΡΠ½ΠΊΡΠΈΡ" (ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠ° ΠΊΠΎΠΌΠΏΠΈΠ»Π°ΡΠΎΡΠ° Π΄Π° Π³Π΅Π½Π΅ΡΠΈΡΠ° ΠΈΠ·Π²ΠΈΠΊΠ²Π°Π½Π΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΡ Π²ΠΌΠ΅ΡΡΠΎ Π²Π³ΡΠ°Π΄Π΅Π½ΠΎ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅) ΠΈ "#pragma alloc_text" (Π΄Π΅ΡΠΈΠ½ΠΈΡΠ° ΠΈΠΌΠ΅ΡΠΎ Π½Π° ΡΠ°Π·Π΄Π΅Π»Π° Ρ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΈΡ ΠΊΠΎΠ΄), ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π΅Π½ΠΈ Π² MSVC. ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° MSVC-ΡΡΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΈ /JMC ΠΈ /JMC ΡΠ»Π°Π³ΠΎΠ²Π΅.
- ΠΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π° ΡΠ°Π±ΠΎΡΠ°ΡΠ° ΠΏΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° Π±ΡΠ΄Π΅ΡΠΈΡΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠΈ C2X ΠΈ C++23. ΠΠ° Π΅Π·ΠΈΠΊΠ° C ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ: Π°ΡΡΠΈΠ±ΡΡΡΡ noreturn, ΠΊΠ»ΡΡΠΎΠ²ΠΈΡΠ΅ Π΄ΡΠΌΠΈ false ΠΈ true, ΡΠΈΠΏΡΡ _BitInt(N) Π·Π° ΡΠ΅Π»ΠΈ ΡΠΈΡΠ»Π° Ρ Π΄Π°Π΄Π΅Π½Π° Π±ΠΈΡΠΎΠ²Π° Π΄ΡΠ»Π±ΠΎΡΠΈΠ½Π°, ΠΌΠ°ΠΊΡΠΎΡΠΈ *_WIDTH, ΠΏΡΠ΅ΡΠΈΠΊΡΡΡ u8 Π·Π° UTF-8 ΠΊΠΎΠ΄ΠΈΡΠ°Π½ΠΈ Π·Π½Π°ΡΠΈ.
ΠΠ° C++ ΡΠ° ΡΠ΅Π°Π»ΠΈΠ·ΠΈΡΠ°Π½ΠΈ ΡΠ»Π΅Π΄Π½ΠΈΡΠ΅: ΡΠ»ΠΈΠ²Π°Π½Π΅ Π½Π° ΠΌΠΎΠ΄ΡΠ»ΠΈ, ABI ΠΈΠ·ΠΎΠ»ΠΈΡΠ°Π½Π΅ Π½Π° ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»Π½ΠΈ ΡΠ»Π΅Π½ΠΎΠ²Π΅, ΠΏΠΎΠ΄ΡΠ΅Π΄Π΅Π½Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ½Π° ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ Π½Π° Π½Π΅Π»ΠΎΠΊΠ°Π»Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ Π² ΠΌΠΎΠ΄ΡΠ»ΠΈ, ΠΌΠ½ΠΎΠ³ΠΎΠΌΠ΅ΡΠ½ΠΈ ΠΈΠ½Π΄Π΅ΠΊΡΠ½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΈ, auto(x), Π½Π΅Π»ΠΈΡΠ΅ΡΠ°Π»Π½ΠΈ ΠΏΡΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, goto ΠΈ Π΅ΡΠΈΠΊΠ΅ΡΠΈ Π²ΡΠ² ΡΡΠ½ΠΊΡΠΈΠΈ, Π΄Π΅ΠΊΠ»Π°ΡΠΈΡΠ°Π½ΠΈ ΠΊΠ°ΡΠΎ constexpr , ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈ Π΅ΠΊΡΠ°Π½ΠΈΡΠ°ΡΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡΠΈ, ΠΈΠΌΠ΅Π½ΡΠ²Π°Π½ΠΈ Π΅ΠΊΡΠ°Π½ΠΈΡΠ°ΡΠΈ ΡΠΈΠΌΠ²ΠΎΠ»ΠΈ.
- ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅, ΡΠ²ΡΡΠ·Π°Π½ΠΈ Ρ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ°ΡΠ° Π½Π° OpenCL ΠΈ OpenMP, ΡΠ° ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈ. ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° OpenCL ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ΡΠΎ cl_khr_subgroup_rotate.
- ΠΠ° x86 Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ°ΡΠ° Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½Π° Π·Π°ΡΠΈΡΠ° ΡΡΠ΅ΡΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΠΈ Π² ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈΡΠ΅, ΠΏΡΠΈΡΠΈΠ½Π΅Π½ΠΈ ΠΎΡ ΡΠΏΠ΅ΠΊΡΠ»Π°ΡΠΈΠ²Π½ΠΎ ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ ΡΠ»Π΅Π΄ Π±Π΅Π·ΡΡΠ»ΠΎΠ²Π½ΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π·Π° ΠΏΡΠ΅ΡΠΊΠ°ΡΠ°Π½Π΅ Π½Π°ΠΏΡΠ΅Π΄. ΠΡΠΎΠ±Π»Π΅ΠΌΡΡ Π²ΡΠ·Π½ΠΈΠΊΠ²Π° ΠΏΠΎΡΠ°Π΄ΠΈ ΠΏΡΠ΅Π²Π°Π½ΡΠΈΠ²Π½Π° ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠ° Π½Π° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½ΠΎ ΡΠ»Π΅Π΄Π²Π°ΡΠΈ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΡΠ° Π·Π° ΡΠ°Π·ΠΊΠ»ΠΎΠ½ΡΠ²Π°Π½Π΅ Π² ΠΏΠ°ΠΌΠ΅ΡΡΠ° (SLS, Straight Line Speculation). ΠΠ° Π΄Π° Π°ΠΊΡΠΈΠ²ΠΈΡΠ°ΡΠ΅ Π·Π°ΡΠΈΡΠ°ΡΠ°, ΡΠ΅ ΠΏΡΠ΅Π΄Π»Π°Π³Π° ΠΎΠΏΡΠΈΡΡΠ° β-mharden-sls=[none|all|return|indirect-jmp]β.
- ΠΠ° ΠΏΠ»Π°ΡΡΠΎΡΠΌΠΈ, ΠΊΠΎΠΈΡΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Ρ ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΠ΅ΡΠΎ SSE2, Π΅ Π΄ΠΎΠ±Π°Π²Π΅Π½ ΡΠΈΠΏ _Float16, ΠΊΠΎΠΉΡΠΎ ΡΠ΅ Π΅ΠΌΡΠ»ΠΈΡΠ° Ρ ΠΏΠΎΠΌΠΎΡΡΠ° Π½Π° ΡΠΈΠΏΠ° float Π² ΡΠ»ΡΡΠ°ΠΉ Π½Π° Π»ΠΈΠΏΡΠ° Π½Π° ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ AVX512-FP16.
- ΠΠΎΠ±Π°Π²Π΅Π½ Π΅ ΡΠ»Π°Π³ "-m[no-]rdpru" Π·Π° ΠΊΠΎΠ½ΡΡΠΎΠ» Π½Π° ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅ΡΠΎ Π½Π° ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΡΠ° RDPRU, ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ°Π½Π°, Π·Π°ΠΏΠΎΡΠ²Π°ΠΉΠΊΠΈ Ρ ΠΏΡΠΎΡΠ΅ΡΠΎΡΠΈ AMD Zen2.
- ΠΠΎΠ±Π°Π²Π΅Π½ Π΅ ΡΠ»Π°Π³ΡΡ β-mfunction-return=thunk-externβ Π·Π° Π·Π°ΡΠΈΡΠ° ΡΡΠ΅ΡΡ ΡΡΠ·Π²ΠΈΠΌΠΎΡΡΡΠ° RETBLEED, ΠΊΠΎΡΡΠΎ ΡΠ°Π±ΠΎΡΠΈ ΡΡΠ΅Π· Π΄ΠΎΠ±Π°Π²ΡΠ½Π΅ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»Π½ΠΎΡΡ ΠΎΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ, ΠΊΠΎΡΡΠΎ ΠΈΠ·ΠΊΠ»ΡΡΠ²Π° ΡΡΠ°ΡΡΠΈΠ΅ΡΠΎ Π½Π° ΡΠΏΠ΅ΠΊΡΠ»Π°ΡΠΈΠ²Π½ΠΈΡ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΡΠΌ Π·Π° ΠΈΠ·ΠΏΡΠ»Π½Π΅Π½ΠΈΠ΅ Π·Π° ΠΈΠ½Π΄ΠΈΡΠ΅ΠΊΡΠ½ΠΈ ΡΠ°Π·ΠΊΠ»ΠΎΠ½Π΅Π½ΠΈΡ.
ΠΠ»ΡΡΠΎΠ²ΠΈ ΠΈΠ½ΠΎΠ²Π°ΡΠΈΠΈ Π² LLVM 15.0:
- ΠΠΎΠ±Π°Π²Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠΊΠ° Π·Π° Cortex-M85 CPU, Armv9-A, Armv9.1-A ΠΈ Armv9.2-A Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΈ, Armv8.1-M PACBTI-M ΡΠ°Π·ΡΠΈΡΠ΅Π½ΠΈΡ.
- ΠΠΎΠ±Π°Π²Π΅Π½ Π΅ Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π΅Π½ Π±Π΅ΠΊΠ΅Π½Π΄ Π·Π° DirectX, ΠΊΠΎΠΉΡΠΎ ΠΏΠΎΠ΄Π΄ΡΡΠΆΠ° ΡΠΎΡΠΌΠ°ΡΠ° DXIL (DirectX Intermediate Language), ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½ Π·Π° DirectX ΡΠ΅ΠΉΠ΄ΡΡΠΈ. ΠΠ΅ΠΊΠ΅Π½Π΄ΡΡ ΡΠ΅ Π°ΠΊΡΠΈΠ²ΠΈΡΠ° ΡΡΠ΅Π· ΡΠΊΠ°Π·Π²Π°Π½Π΅ Π½Π° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡΠ° β-DLLVM_EXPERIMENTAL_TARGETS_TO_BUILD=DirectXβ ΠΏΠΎ Π²ΡΠ΅ΠΌΠ΅ Π½Π° Π°ΡΠ΅ΠΌΠ±Π»ΠΈΡΠ°Π½Π΅ΡΠΎ.
- Libc++ ΠΏΡΠΎΠ΄ΡΠ»ΠΆΠ°Π²Π° Π΄Π° Π²Π½Π΅Π΄ΡΡΠ²Π° Π½ΠΎΠ²ΠΈ ΡΡΠ½ΠΊΡΠΈΠΈ Π½Π° ΡΡΠ°Π½Π΄Π°ΡΡΠΈΡΠ΅ C++20 ΠΈ C++2b, Π²ΠΊΠ»ΡΡΠΈΡΠ΅Π»Π½ΠΎ Π·Π°Π²ΡΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π²Π½Π΅Π΄ΡΡΠ²Π°Π½Π΅ΡΠΎ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° βformatβ ΠΈ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π°ΡΠ° Π΅ΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»Π½Π° Π²Π΅ΡΡΠΈΡ Π½Π° Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ°ΡΠ° βrangesβ.
- ΠΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈ Π±Π΅ΠΊΠ΅Π½Π΄ΠΎΠ²Π΅ Π·Π° x86, PowerPC ΠΈ RISC-V Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠΈ.
- ΠΡΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈΡΠ΅ Π½Π° LLD Π»ΠΈΠ½ΠΊΠ΅ΡΠ° ΠΈ LLDB Π΄Π΅Π±ΡΠ³Π΅ΡΠ° ΡΠ° ΠΏΠΎΠ΄ΠΎΠ±ΡΠ΅Π½ΠΈ.
ΠΠ·ΡΠΎΡΠ½ΠΈΠΊ: opennet.ru