ΠžΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΡΡ‚Π°Π±ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π»ΠΈΠ· компилятора ΠΈ стандарта языка 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

author avatar
Erik Peterson Π Π΅Π΄Π°ΠΊΡ‚ΠΎΡ€, ΠœΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€
A ProHoster specialist with over seven years of experience in hosting, network infrastructure, and internet security. I participate in the development and maintenance of server solutions, VPN services, and client platforms. I specialize in stability, data protection, and service optimization for clients. I regularly monitor updates in industry standards and best practices.

Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ