Bol spustený nasledujúci stabilný release kompilátora a štandardu jazyka Rust.
Aktualizácia vstavaných knižníc musl na verziu 1.2.5
Rôzne cieľové platformy *-linux-musl sú teraz dodávané s musl 1.2.5. Predovšetkým sa to týka statických zostáv musl pre x86_64, aarch64 a powerpc64le, ktoré predtým používali verziu 1.2.3. Táto aktualizácia obsahuje niekoľko opráv a vylepšení, ako aj jednu "lámajúcu" zmenu, ktorá sa dotýka ekosystému Rust.
Hlavnou motiváciou pre túto aktualizáciu boli významné vylepšenia v DNS resolveri musl, ktoré sa objavili vo verzii 1.2.4 a boli vylepšené vo verzii 1.2.5. Pri použití musl na statické linkovanie by to malo zvýšiť spoľahlivosť sieťových funkcií prenosných binárnych súborov Linux, najmä pri práci s veľkými DNS záznamami a rekurzívnymi servermi mien.
Avšak verzia 1.2.4 tiež obsahuje kritickú zmenu: odstránenie niekoľkých zastaraných symbolov kompatibility, ktoré používal crate libc na GitHub. Oprava pre toto bola vydaná vo libc 0.2.146 už v júni 2023 (pred 2,5 rokmi), a domnievame sa, že sa dostala dosť široko, aby sme mohli vykonať zmeny na cieľových platformách Rust.
Povolenie globálnemu alokátorovi používať TLS
Rust 1.93 koriguje interné mechanizmy štandardnej knižnice, čo umožňuje globálnym alokátorom, napísaným v Rust, používať std::thread_local! a std::thread::current bez rizika re-entrancy pomocou systémového alokátora. Podrobnosti nájdete v dokumentácii štandardnej knižnice Rust.
Atribúty cfg v asm! príkazoch
Predtým, ak jednotlivé časti sekcie vloženej zostavy vyžadovali podmienené kompilovanie cfg, bolo potrebné zdvojiť celý blok asm! úplne. Vo verzii 1.93 je možné aplikovať atribút cfg na jednotlivé inštrukcie v rámci bloku:
asm!( // alebo global_asm! alebo naked_asm! "nop", #[cfg(target_feature = "sse2")] "nop", // … #[cfg(target_feature = "sse2")] a = const 123, // používa sa iba na sse2 );
Do stabilného API prešlo:
<[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`
Zdroj: linux.org.ru
