Die folgende stabile Version des Compilers und des Rust-Sprachstandards wurde veröffentlicht.
Update der eingebetteten musl-Bibliothek auf Version 1.2.5
Verschiedene Zielplattformen *-linux-musl werden jetzt mit musl 1.2.5 geliefert. Dies betrifft insbesondere die statischen musl-Bauten fĂŒr x86_64, aarch64 und powerpc64le, die zuvor die Version 1.2.3 verwendet haben. Dieses Update enthĂ€lt mehrere Korrekturen und Verbesserungen, sowie eine âbrechendeâ Ănderung, die das Rust-Ăkosystem betrifft.
Der Hauptgrund fĂŒr dieses Update sind erhebliche Verbesserungen im DNS-Resolver von musl, die in Version 1.2.4 eingefĂŒhrt und in 1.2.5 weiterentwickelt wurden. Bei der Verwendung von musl fĂŒr die statische Verlinkung sollte dies die ZuverlĂ€ssigkeit der Netzwerkfunktionen tragbarer Linux-BinĂ€rdateien erhöhen, insbesondere bei der Arbeit mit groĂen DNS-EintrĂ€gen und rekursiven Nameservern.
Die Version 1.2.4 enthĂ€lt jedoch auch eine kritische Ănderung: die Entfernung mehrerer veralteter KompatibilitĂ€tszeichen, die von der Bibliothek libc auf GitHub verwendet wurden. Der Fix dafĂŒr wurde in libc 0.2.146 bereits im Juni 2023 veröffentlicht (vor 2,5 Jahren), und wir sind der Meinung, dass es sich bereits weit genug verbreitet hat, um Ănderungen an den Zielplattformen von Rust vorzunehmen.
Erlauben, dass der globale Allocator TLS verwendet.
Rust 1.93 korrigiert die internen Mechanismen der Standardbibliothek, sodass globale Allocatoren, die in Rust geschrieben sind, std::thread_local! und std::thread::current ohne das Risiko der Rekursion durch die Verwendung des systemeigenen Allocators nutzen können. Weitere Einzelheiten finden Sie in der Dokumentation der Rust-Standardbibliothek.
cfg-Attribute in asm!-Zeilen.
FrĂŒher, wenn einzelne Teile des Abschnitts eingebetteter Assemblierung eine bedingte Kompilierung cfg erforderten, musste der gesamte asm!-Block dupliziert werden. In der Version 1.93 können cfg-Attribute auf einzelne Anweisungen innerhalb des Blocks angewendet werden:
asm!( // oder global_asm! oder naked_asm! "nop", #[cfg(target_feature = "sse2")] "nop", // ⊠#[cfg(target_feature = "sse2")] a = const 123, // nur benutzt auf sse2 );
In die Kategorie stabiler APIs ĂŒbertragen:
<[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`
Quelle: linux.org.ru
