Публикуван е следващият стабилен релиз на компилатора и стандарта на езика 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 също съдържа критична промяна: премахването на няколко остарели символа на съвместимост, които използва crate libc на GitHub. Корекция за това беше издадена в libc 0.2.146 още през юни 2023 г. (преди 2,5 години), и считаме, че тя е разпространена достатъчно широко, за да можем да направим промени в целевите платформи на Rust.

Позволяване на глобалния allocator да използва TLS

Rust 1.93 коригира вътрешните механизми на стандартната библиотека, позволявайки на глобалните алокатори, написани на Rust, да използват std::thread_local! и std::thread::current без риск от повторно влизане чрез използване на системния алокатор. Подробности можете да намерите в документацията на стандартната библиотека на Rust.

Атрибутите cfg в asm! редове

По-рано, ако отделни части от секцията на вградената сборка изискваха условна компилация cfg, се налагаше да дублирате целия блок asm! напълно. В версия 1.93 атрибутът cfg може да се прилага към отделни инструкции в блока:

asm!( // или global_asm! или naked_asm! "nop", #[cfg(target_feature = "sse2")] "nop", // … #[cfg(target_feature = "sse2")] a = const 123, // използва се само на sse2 );

Преведени в категорията стабилен 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`

Източник: linux.org.ru

Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри 🔥 Купете надежден хостинг за сайтове със защита от DDoS, VPS и VDS сървъри | ProHoster