Byl vydán další stabilní release kompilátoru a standardu jazyka Rust.
Aktualizace zabudované knihovny musl na verzi 1.2.5
Různé cílové platformy *-linux-musl nyní dodávají musl 1.2.5. To se především týká statických sestavení musl pro x86_64, aarch64 a powerpc64le, které dříve používaly verzi 1.2.3. Tato aktualizace zahrnuje několik oprav a vylepšení, stejně jako jednu "zlomovou" změnu, která se dotýká ekosystému Rust.
Hlavním motivem této aktualizace byla významná zlepšení v DNS resolveru musl, která se objevila ve verzi 1.2.4 a byla zdokonalena ve verzi 1.2.5. Při použití musl pro statické linkování by to mělo zvýšit spolehlivost síťových funkcí přenosných binárních souborů Linux, zejména při práci s velkými DNS záznamy a rekurzivními servery názvů.
Verze 1.2.4 však také obsahuje kritickou změnu: odstranění několika zastaralých znaků kompatibility, které používal crate libc na GitHubu. Oprava pro to byla vydána v libc 0.2.146 již v červnu 2023 (před 2,5 lety), a domníváme se, že se dostatečně rozšířila, abychom mohli provést změny pro cílové platformy Rust.
Povolení globálnímu alokátoru používat TLS
Rust 1.93 upravuje vnitřní mechanismy standardní knihovny, což umožňuje globálním alokátorům napsaným v Rust používat std::thread_local! a std::thread::current bez rizika re-entrancy díky použití systémového alokátoru. Podrobnosti naleznete v dokumentaci standardní knihovny Rust.
Atributy cfg v asm! řádcích
Dříve, pokud jednotlivé části sekce zabudované sestavy vyžadovaly podmíněné kompilace cfg, bylo nutné duplikovat celý blok asm! úplně. Ve verzi 1.93 lze atribut cfg použít na jednotlivé instrukce uvnitř bloku:
asm!( // nebo global_asm! nebo naked_asm! "nop", #[cfg(target_feature = "sse2")] "nop", // … #[cfg(target_feature = "sse2")] a = const 123, // používané pouze na sse2 );
Bylo převedeno do třídy stabilního 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`
Zdroj: linux.org.ru
