Rust 1.93

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

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