Rust 1.93

De volgende stabiele release van de Rust-compiler en -standaard is gepubliceerd.

Bijgewerkte ingebouwde bibliotheek musl naar versie 1.2.5

Diverse doelplatforms *-linux-musl worden nu geleverd met musl 1.2.5. Dit heeft vooral betrekking op statische musl-bundels voor x86_64, aarch64 en powerpc64le, die voorheen versie 1.2.3 gebruikten. Deze update bevat enkele bugfixes en verbeteringen, evenals één 'breaking' wijziging die het Rust-ecosysteem raakt.

De belangrijkste motivatie voor deze update zijn significante verbeteringen in de DNS-resolver van musl, die zijn verschenen in versie 1.2.4 en verder zijn verfijnd in 1.2.5. Wanneer musl wordt gebruikt voor statische linking, zou dit de betrouwbaarheid van netwerkfuncties van draagbare Linux-binaries moeten verhogen, vooral bij het werken met grote DNS-records en recursieve naamservers.

Echter, versie 1.2.4 bevat ook een kritieke wijziging: verwijdering van meerdere verouderde compatibiliteitssymbolen die door de crate libc op GitHub werden gebruikt. De oplossing hiervoor werd in libc 0.2.146 al in juni 2023 (2,5 jaar geleden) uitgebracht, en we geloven dat het voldoende wijd verspreid is zodat we wijzigingen in de doelplatforms van Rust kunnen doorvoeren.

Toestaan dat de globale allocator TLS gebruikt

Rust 1.93 past de interne mechanismen van de standaardbibliotheek aan, waardoor globale allocators, geschreven in Rust, std::thread_local! en std::thread::current kunnen gebruiken zonder het risico van re-entrant gebruik door gebruik te maken van de systeemallocator. Meer details zijn te vinden in de documentatie van de standaardbibliotheek van Rust.

cfg-attributen in asm! regels

Eerder, als afzonderlijke delen van de sectie voor ingebouwde assembly voorwaardelijke compilatie cfg vereisten, moest de hele asm! blok worden gedupliceerd. In versie 1.93 kan het cfg-attribuut nu worden toegepast op afzonderlijke instructies binnen het blok:

asm!( // of global_asm! of naked_asm! "nop", #[cfg(target_feature = "sse2")] "nop", // … #[cfg(target_feature = "sse2")] a = const 123, // alleen gebruikt op sse2 );

Er is vertaald naar de stabiele 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`

Bron: linux.org.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster