Rust 1.93

Opublikowano następną stabilną wersję kompilatora i standardu języka Rust.

Aktualizacja wbudowanej biblioteki musl do wersji 1.2.5

Różne platformy docelowe *-linux-musl teraz dostarczane są z musl 1.2.5. Dotyczy to głównie statycznych kompilacji musl dla x86_64, aarch64 i powerpc64le, które wcześniej używały wersji 1.2.3. Ta aktualizacja zawiera kilka poprawek i udoskonaleń, a także jedną "łamiącą" zmianę, która dotyczy ekosystemu Rust.

Główną motywacją dla tej aktualizacji były znaczące poprawki w resolverze DNS musl, które pojawiły się w wersji 1.2.4 i zostały rozwinięte w 1.2.5. Użycie musl do statycznego linkowania powinno zwiększyć niezawodność funkcji sieciowych przenośnych plików binarnych Linux, szczególnie podczas pracy z dużymi rekordami DNS i rekurencyjnymi serwerami nazw.

Jednak wersja 1.2.4 zawiera również krytyczną zmianę: usunięcie kilku przestarzałych symboli zgodności, które były używane przez crate libc na GitHubie. Poprawka dla tego została wydana w libc 0.2.146 już w czerwcu 2023 roku (2,5 roku temu), i uważamy, że rozprzestrzeniła się na tyle szeroko, że możemy wprowadzić zmiany w docelowych platformach Rust.

Zezwolenie globalnemu alokatorowi na użycie TLS

Rust 1.93 poprawia wewnętrzne mechanizmy standardowej biblioteki, umożliwiając globalnym alokatorom, napisanym w Rust, korzystanie z std::thread_local! i std::thread::current bez ryzyka re-entrancy dzięki wykorzystaniu systemowego alokatora. Szczegóły można znaleźć w dokumentacji standardowej biblioteki Rust.

Atrybuty cfg w wierszach asm!

Wcześniej, jeśli pojedyncze części sekcji wbudowanej wymagały warunkowej kompilacji cfg, trzeba było duplikować cały blok asm! w całości. W wersji 1.93 atrybut cfg można zastosować do pojedynczych instrukcji w bloku:

asm!( // lub global_asm! lub naked_asm! "nop", #[cfg(target_feature = "sse2")] "nop", // … #[cfg(target_feature = "sse2")] a = const 123, // używane tylko na sse2 );

Zostało przetłumaczone do stabilnego API:

<[MaybeUninit]>::assume_init_drop <[MaybeUninit]>::assume_init_ref` <[MaybeUninit]>::assume_init_mut` <[MaybeUninit]>::write_copy_of_slice` <[MaybeUninit]>::write_clone_of_slice` String::into_raw_parts` Vec::into_raw_parts` ::unchecked_neg` ::unchecked_shl` ::unchecked_shr` ::unchecked_shl` ::unchecked_shr` ::as_array` ::as_array_mut` ::as_array` ::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`

Źródło: linux.org.ru

Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS 🔥 Kup solidny hosting stron z ochroną przed DDoS, serwery VPS VDS | ProHoster