Ishte publikuar lëshimi më stabil i përkthyesit dhe standardit të gjuhës Rust.
Përditësimi i bibliotekës së integruar musl në versionin 1.2.5
Platforma të ndryshme të targetuara *-linux-musl tani ofrojnë musl 1.2.5. Kjo ka të bëjë kryesisht me ndërtimet statike 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 "breaking" që ndikon në ekosistemin Rust.
Motivimi kryesor për këtë përditësim ishin përmirësimet e rëndësishme në DNS-resolverin musl, që dolën në versionin 1.2.4 dhe u përmirësuan në 1.2.5. Përdorimi i musl për lidhje statike duhet të rrisë besueshmërinë e funksioneve rrjetore të skedarëve binarë portativë të Linux, veçanërisht gjatë punës me rekorde të mëdha DNS dhe serverë emrash rekursivë.
Megjithatë, versioni 1.2.4 gjithashtu përmban një ndryshim kritik: heqja e disa simboleve të vjetruara të përputhshmërisë, që përdorte krayi 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ë përhapur mjaft gjerësisht, sa që mund të bëjmë ndryshime në platformat targetuese të Rust.
Lejimi i alokatorit global të përdorë TLS
Rust 1.93 rregullon mekanizmat e brendshëm të bibliotekës standarde, duke lejuar alokatorë globalë të shkruar në Rust të përdorin std::thread_local! dhe std::thread::current pa rrezik re-entrancy përmes përdorimit të alokatorit sistemik. Detajet mund të gjenden në dokumentacionin e bibliotekës standarde të Rust.
Atributet cfg në linjat asm!
Më parë, nëse pjesët e veçanta të seksionit të ndërtimit të integruar kërkonin kompilim të kushtëzuar cfg, duhej të dyfishohej e gjithë blloku asm! nga e para. Në versionin 1.93, atributi cfg mund të aplikohet në instruksione të veçanta brenda bllokut:
asm!( // ose global_asm! ose naked_asm! "nop", #[cfg(target_feature = "sse2")] "nop", // ⊠#[cfg(target_feature = "sse2")] a = const 123, // vetëm përdoret në sse2 );
Janë përshkruar si API të stabilizuar:
<[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
