ΠΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΡΠΉ ΡΠ΅Π»ΠΈΠ· ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ° ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ° ΡΠ·ΡΠΊΠ° Rust.
ΠΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ musl Π΄ΠΎ Π²Π΅ΡΡΠΈΠΈ 1.2.5
Π Π°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠ΅Π»Π΅Π²ΡΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ *-linux-musl ΡΠ΅ΠΏΠ΅ΡΡ ΠΏΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ Ρ musl 1.2.5. Π ΠΏΠ΅ΡΠ²ΡΡ ΠΎΡΠ΅ΡΠ΅Π΄Ρ ΡΡΠΎ ΠΊΠ°ΡΠ°Π΅ΡΡΡ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ±ΠΎΡΠΎΠΊ musl Π΄Π»Ρ x86_64, aarch64 ΠΈ powerpc64le, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠ°Π½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π»ΠΈ Π²Π΅ΡΡΠΈΡ 1.2.3. ΠΡΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠ΅ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΈΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΉ ΠΈ ΡΠ»ΡΡΡΠ΅Π½ΠΈΠΉ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΠ΄Π½ΠΎ Β«Π»ΠΎΠΌΠ°ΡΡΠ΅Π΅Β» ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅, Π·Π°ΡΡΠ°Π³ΠΈΠ²Π°ΡΡΠ΅Π΅ ΡΠΊΠΎΡΠΈΡΡΠ΅ΠΌΡ Rust.
ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΌΠΎΡΠΈΠ²Π°ΡΠΈΠ΅ΠΉ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΡ ΡΡΠ°Π»ΠΈ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ»ΡΡΡΠ΅Π½ΠΈΡ Π² DNS-ΡΠ΅Π·ΠΎΠ»Π²Π΅ΡΠ΅ musl, ΠΏΠΎΡΠ²ΠΈΠ²ΡΠΈΠ΅ΡΡ Π² Π²Π΅ΡΡΠΈΠΈ 1.2.4 ΠΈ Π΄ΠΎΡΠ°Π±ΠΎΡΠ°Π½Π½ΡΠ΅ Π² 1.2.5. ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ musl Π΄Π»Ρ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠΉ Π»ΠΈΠ½ΠΊΠΎΠ²ΠΊΠΈ ΡΡΠΎ Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΠΏΠΎΠ²ΡΡΠΈΡΡ Π½Π°Π΄Π΅ΠΆΠ½ΠΎΡΡΡ ΡΠ΅ΡΠ΅Π²ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌΡΡ Π±ΠΈΠ½Π°ΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² Linux, ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ ΠΏΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ DNS-Π·Π°ΠΏΠΈΡΡΠΌΠΈ ΠΈ ΡΠ΅ΠΊΡΡΡΠΈΠ²Π½ΡΠΌΠΈ ΡΠ΅ΡΠ²Π΅ΡΠ°ΠΌΠΈ ΠΈΠΌΠ΅Π½.
ΠΠ΄Π½Π°ΠΊΠΎ Π²Π΅ΡΡΠΈΡ 1.2.4 ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΠ΅: ΡΠ΄Π°Π»Π΅Π½ΠΈΠ΅ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΡΡΡΠ°ΡΠ΅Π²ΡΠΈΡ ΡΠΈΠΌΠ²ΠΎΠ»ΠΎΠ² ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΡΡΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π» ΠΊΡΡΠΉΡ libc Π½Π° GitHub. ΠΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ Π±ΡΠ»ΠΎ Π²ΡΠΏΡΡΠ΅Π½ΠΎ Π² libc 0.2.146 Π΅ΡΠ΅ Π² ΠΈΡΠ½Π΅ 2023 Π³ΠΎΠ΄Π° (2,5 Π³ΠΎΠ΄Π° Π½Π°Π·Π°Π΄), ΠΈ ΠΌΡ ΡΡΠΈΡΠ°Π΅ΠΌ, ΡΡΠΎ ΠΎΠ½ΠΎ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΠΈΠ»ΠΎΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ ΡΠΈΡΠΎΠΊΠΎ, ΡΡΠΎΠ±Ρ ΠΌΡ ΠΌΠΎΠ³Π»ΠΈ Π²Π½Π΅ΡΡΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ Π² ΡΠ΅Π»Π΅Π²ΡΠ΅ ΠΏΠ»Π°ΡΡΠΎΡΠΌΡ Rust.
Π Π°Π·ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΠΎΠΌΡ Π°Π»Π»ΠΎΠΊΠ°ΡΠΎΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ TLS
Rust 1.93 ΠΊΠΎΡΡΠ΅ΠΊΡΠΈΡΡΠ΅Ρ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡ Π³Π»ΠΎΠ±Π°Π»ΡΠ½ΡΠΌ Π°Π»Π»ΠΎΠΊΠ°ΡΠΎΡΠ°ΠΌ, Π½Π°ΠΏΠΈΡΠ°Π½Π½ΡΠΌ Π½Π° Rust, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ std::thread_local! ΠΈ std::thread::current Π±Π΅Π· ΡΠΈΡΠΊΠ° re-entrancy Π·Π° ΡΡΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΠ½ΠΎΠ³ΠΎ Π°Π»Π»ΠΎΠΊΠ°ΡΠΎΡΠ°. ΠΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠΈ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡΠΈ Π² Π΄ΠΎΠΊΡΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ Rust.
ΠΡΡΠΈΠ±ΡΡΡ cfg Π² ΡΡΡΠΎΠΊΠ°Ρ asm!
Π Π°Π½Π΅Π΅, Π΅ΡΠ»ΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠ΅ ΡΠ°ΡΡΠΈ ΡΠ΅ΠΊΡΠΈΠΈ Π²ΡΡΡΠΎΠ΅Π½Π½ΠΎΠΉ ΡΠ±ΠΎΡΠΊΠΈ ΡΡΠ΅Π±ΠΎΠ²Π°Π»ΠΈ ΡΡΠ»ΠΎΠ²Π½ΠΎΠΉ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ cfg, ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΠ»ΠΎΡΡ Π΄ΡΠ±Π»ΠΈΡΠΎΠ²Π°ΡΡ Π²Π΅ΡΡ Π±Π»ΠΎΠΊ asm! ΡΠ΅Π»ΠΈΠΊΠΎΠΌ. Π Π²Π΅ΡΡΠΈΠΈ 1.93 Π°ΡΡΠΈΠ±ΡΡ cfg ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡΠΈΠΌΠ΅Π½ΡΡΡ ΠΊ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΌ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΡΠΌ Π²Π½ΡΡΡΠΈ Π±Π»ΠΎΠΊΠ°:
asm!( // or global_asm! or naked_asm! "nop", #[cfg(target_feature = "sse2")] "nop", // β¦ #[cfg(target_feature = "sse2")] a = const 123, // only used on sse2 );
Π ΡΠ°Π·ΡΡΠ΄ ΡΡΠ°Π±ΠΈΠ»ΡΠ½ΠΎΠ³ΠΎ API ΠΏΠ΅ΡΠ΅Π²Π΅Π΄Π΅Π½ΠΎ:
<[MaybeUninit<T>]>::assume_init_drop <[MaybeUninit<T>]>::assume_init_ref` <[MaybeUninit<T>]>::assume_init_mut` <[MaybeUninit<T>]>::write_copy_of_slice` <[MaybeUninit<T>]>::write_clone_of_slice` String::into_raw_parts` Vec::into_raw_parts` <iN>::unchecked_neg` <iN>::unchecked_shl` <iN>::unchecked_shr` <uN>::unchecked_shl` <uN>::unchecked_shr` <[T]>::as_array` <[T]>::as_array_mut` <*const [T]>::as_array` <*mut [T]>::as_array_mut` VecDeque::pop_front_if` VecDeque::pop_back_if` Duration::from_nanos_u128` char::MAX_LEN_UTF8` char::MAX_LEN_UTF16` std::fmt::from_fn` std::fmt::FromFn`
ΠΡΡΠΎΡΠ½ΠΈΠΊ: linux.org.ru

