Publicēta nākamā stabilā Rust valodas kompilatora un standarta versija.
Iebūvētās bibliotēkas musl atjauninājums līdz versijai 1.2.5
Dažādās mērķplatformās *-linux-musl tagad pieejama musl 1.2.5. Tas galvenokārt attiecas uz statiskajiem musl izlaidumiem x86_64, aarch64 un powerpc64le, kuri iepriekš izmantoja versiju 1.2.3. Šis atjauninājums ietver vairākus labojumus un uzlabojumus, kā arī vienu „salaužošu” izmaiņu, kas ietekmē Rust ekosistēmu.
Galvenā motivācija šim atjauninājumam bija ievērojami uzlabojumi musl DNS-rezolvētājā, kas parādījās versijā 1.2.4 un tika uzlaboti 1.2.5. Izmantojot musl statiskai saistīšanai, tas jāuzlabo tīkla funkciju uzticamībai pārvietojamajos Linux bināros failos, it īpaši strādājot ar lielām DNS ierakstiem un rekursīvajiem nosaukumu serveriem.
Tomēr versija 1.2.4 arī satur kritiski izmaiņas: vairāku novecojušu saderības simbolu, ko izmantoja libc krājums GitHub, dzēšana. Labojums tam tika izlaists libc 0.2.146 jau 2023. gada jūnijā (pirms 2,5 gadiem), un mēs uzskatām, ka tas ir izplatījies pietiekami plaši, lai mēs varētu veikt izmaiņas Rust mērķplatformās.
Atļaut globālajam alokatoram izmantot TLS
Rust 1.93 koriģē standarta bibliotēkas iekšējās mehānismus, ļaujot Rust valodā rakstītiem globālajiem alokatoriem izmantot std::thread_local! un std::thread::current bez re-entrancy riska, izmantojot sistēmas alokatoru. Sīkāku informāciju var atrast Rust standarta bibliotēkas dokumentācijā.
cfg atribūti asm! rindiņās
Iepriekš, ja atsevišķas iebūvēto bloku sadaļas prasīja nosacītu kompilāciju cfg, bija jādublē viss asm! bloks pilnībā. Versijā 1.93 cfg atribūtu var pielietot atsevišķām instrukcijām blokā:
asm!( // or global_asm! or naked_asm! "nop", #[cfg(target_feature = "sse2")] "nop", // … #[cfg(target_feature = "sse2")] a = const 123, // only used on sse2 );
Stabilā API klasē iekļauts:
<[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`
Avots: linux.org.ru
