Rust 1.93

A fost publicată următoarea versiune stabilă a compilatorului și a standardului limbajului Rust.

Actualizarea bibliotecii încorporate musl la versiunea 1.2.5

Diferitele platforme țintă *-linux-musl sunt acum livrate cu musl 1.2.5. Acest lucru se aplică în special construirilor statice musl pentru x86_64, aarch64 și powerpc64le, care foloseau anterior versiunea 1.2.3. Această actualizare include câteva corecturi și îmbunătățiri, precum și o modificare "ruptă" care afectează ecosistemul Rust.

Principala motivație pentru această actualizare au fost îmbunătățirile semnificative în rezolvatorul DNS musl, apărute în versiunea 1.2.4 și îmbunătățite în 1.2.5. Atunci când se folosește musl pentru legarea statică, aceasta ar trebui să crească fiabilitatea funcțiilor de rețea ale fișierelor binare portabile Linux, în special când se lucrează cu înregistrări DNS mari și servere de nume recursive.

Cu toate acestea, versiunea 1.2.4 conține și o modificare critică: eliminarea mai multor simboluri de compatibilitate învechite folosite de crate-ul libc pe GitHub. Corectura pentru aceasta a fost lansată în libc 0.2.146 încă din iunie 2023 (cu 2,5 ani în urmă), iar noi considerăm că aceasta a fost suficient de răspândită pentru a putea face modificări în platformele țintă Rust.

Permisiunea alocatorului global de a folosi TLS

Rust 1.93 corectează mecanismele interne ale bibliotecii standard, permițând alocatorilor globali scriși în Rust să utilizeze std::thread_local! și std::thread::current fără riscul re-entranței prin utilizarea alocatorului de sistem. Detalii pot fi găsite în documentația bibliotecii standard Rust.

Atributele cfg în liniile asm!

Anterior, dacă părți separate ale secțiunii de asamblare încorporată necesitau compilare condiționată cfg, era necesar să se facă duplicarea întregului bloc asm! integral. În versiunea 1.93, atributul cfg poate fi aplicat instrucțiunilor individuale din interiorul blocului:

asm!( // sau global_asm! sau naked_asm! "nop", #[cfg(target_feature = "sse2")] "nop", // … #[cfg(target_feature = "sse2")] a = const 123, // utilizat doar pe sse2 );

A fost trecut în categoria API-ului 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`

Sursa: linux.org.ru

Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS 🔥 Cumpără un hosting fiabil pentru site-uri cu protecție DDoS, servere VPS VDS | ProHoster