Lëshohet versioni i ri stabil i kompilatorit dhe standardit të gjuhës Rust.
Përditësimi i bibliotekës incorporated musl në versionin 1.2.5
Platforma të ndryshme të qëllimit *-linux-musl tani vijnë me musl 1.2.5. Kjo ndikon kryesisht në ndërtimet statike të musl për x86_64, aarch64 dhe powerpc64le, të cilat më parë përdornin versionin 1.2.3. Ky përditësim përfshin disa rregullime dhe përmirësime, si dhe një ndryshim "prishës" që ndikon në ekosistemin Rust.
Motivimi kryesor për këtë përditësim ishte përmirësimet e rëndësishme në DNS-resolverin musl, që u paraqitën në versionin 1.2.4 dhe u përmirësuan në 1.2.5. Duke përdorur musl për lidhjen statike, kjo duhet të rrisë besueshmërinë e funksioneve rrjetore të skedarëve binarë të transportueshëm Linux, veçanërisht kur punoni me regjistrime të mëdha DNS dhe serverë emrash rekursivë.
Megjithatë, versioni 1.2.4 gjithashtu përmban ndryshim kritik: heqja e disa simboleve të vjetëruara të kompatibilitetit që përdorte krijesa libc në GitHub. Rregullimi për këtë u publikua në libc 0.2.146 që në qershor 2023 (2.5 vjet më parë), dhe ne besojmë se është shpërndarë mjaft gjerësisht sa për të bërë ndryshimet në platformat e qëllimit Rust.
Lejimi i alokatorëve globalë të përdorin TLS
Rust 1.93 korrigjon mekanizmat e brendshëm të bibliotekës standarde, duke lejuar alokatorëve globalë të shkruar në Rust të përdorin std::thread_local! dhe std::thread::current pa rrezik re-entrance përmes përdorimit të alokatorit sistemik. Detajet mund të gjenden në dokumentacionin e bibliotekës standarde Rust.
Atributet cfg në vargjet asm!
Më parë, nëse pjesët e veçanta të seksionit të ndërtimit të veçantë kërkonin kompilim të kushtëzuar cfg, ishte e nevojshme të dyfishohej e gjithë blloku asm! në mënyrë të plotë. Në versionin 1.93, atributi cfg mund të aplikohet në instruksionet e veçanta brenda bllokut:
asm!( // ose global_asm! ose naked_asm! "nop", #[cfg(target_feature = "sse2")] "nop", // ⊠#[cfg(target_feature = "sse2")] a = const 123, // përdoret vetëm në sse2 );
Dëgjohet në një API stabil:
<[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`
Burimi: linux.org.ru
