A publicazione hè stata publicata Ruggine 1.96.0 — l'ultima versione stabile di u linguaghju di prugrammazione Rust. L'aghjurnamentu hè statu publicatu. 28 May 2026 anni; pò esse stallatu cù u cumandamentu standard rustup update stable. I cambiamenti principali includenu novi tipi di intervalli in core::range, stabilizazione di macro di currispundenza di mudelli, rinfurzamentu di u cumpurtamentu di compilazione WebAssembly è correzioni per duie vulnerabilità in Cargo.
Cambiamenti maiò
Novi tipi di gamma core::range::Range*.
I novi tipi di intervalli sò stati stabilizzati in a biblioteca standard: core::range::Range, RangeFrom, RangeInclusive, è i so iteratori assuciati. À u cuntrariu di i vechji tipi di core::ops, i novi intervalli ùn implementanu micca Iterator direttamente, ma sò cunvertiti in un iteratore via IntoIterator. Questu permette à questi intervalli di esse copiabili, ciò chì hè cunveniente, per esempiu, quandu si almacena un intervallu cum'è un campu di struttura. Una sintassi cum'è 0..1 crea attualmente i vechji tipi di intervalli, ma hè previstu di migrà versu i novi tipi in una versione futura di u linguaghju.Aghjuntu assert_matches! è debug_assert_matches!.
E nove macro permettenu di verificà chì un valore currisponde à un mudellu datu. Questu hè simile in cuncettu à assert!(matches!(…)), ma in casu d'errore, una rapprisentazione di debug di u valore hè stampata, simplificendu a diagnostica. Queste macro ùn sò state aghjunte à Prelude per evità cunflitti cù crate di terze parti populari, dunque devenu esse impurtate esplicitamente da core o std.Hà cambiatu u cumpurtamentu di i miri WebAssembly.
Rust ùn passa più --allow-undefined à u linker per e compilazioni WebAssembly. I simboli indefiniti sò avà trattati cum'è errori durante u ligame, invece di esse automaticamente cunvertiti in impurtazioni da u modulu "env". Questu duveria rilevà l'errori di compilazione è i nomi di simboli invalidi prima. U vechju cumpurtamentu pò esse annullatu, se necessariu, aduprendu RUSTFLAGS=-Clink-arg=--allow-undefined o specificendu esplicitamente u modulu wasm impurtatu aduprendu #[link(wasm_import_module = "env")].U cargu hà ricevutu correzioni di sicurezza.
Cambiamenti in lingua.
A publicazione include: Parechje correzioni è miglioramenti minori: Hà permessu di passà metavariabili expr di macro à cfg, hà currettu u cunvertisce never-type in espressioni di tupla, hà riparatu casi rari di suggerimenti di inferenza di tipu incorretti per l'argumenti di funzione, hà aghjuntu u supportu per i registri vettoriali s390x in l'assemblea in linea, è hà ripermessu e custanti ManuallyDrop cum'è mudelli - questu corregge una regressione introdutta in Rust 1.94.0.Cambiamenti in u compilatore è e piattaforme.
di LinuxU supportu di rilassamentu di ligami hè statu attivatu per i miri LoongArch - una ottimizazione di ligami chì simplifica alcune transizioni è chjame dopu a distribuzione di u codice. Per riscv64gc-unknown-fuchsia, a cunfigurazione di basa hè stata aggiornata à u prufilu RVA22 cù supportu per estensioni vettoriali.Aghjurnamenti standard di a biblioteca.
Hè statu aghjuntu u supportu per l'iterazione annantu à intervalli di numeri interi NonZero. Hè stata ancu curretta a gestione pigra di l'indirizzi host in SGX via ToSocketAddr, è a definizione di memoria "leggibile/scrivibile" hè stata chiarita in a ducumentazione è in i cuntratti interni: u puntatore nullu hè statu eliminatu da a definizione generale, è l'eccezioni sò avà specificate separatamente per metudi specifichi.API stabilizate.
Trà l'interfacce stabilizzate ci sò assert_matches!, debug_assert_matches!, implementazioni di From per AssertUnwindSafe , LazyCell è LazyLock , è dinò novi tipi d'intervalli è iteratori da core::range, cumpresi Range, RangeFrom, RangeToInclusive è i so iteratori.Cargo: Cambiamenti à e dipendenze è a ducumentazione.
Una dipendenza pò avà specificà sia un repositoriu Git sia un registru alternativu: a versione Git serà aduprata lucalmente, è a versione di u registru serà aduprata durante a publicazione, simile à u cumpurtamentu cù crates.io. Hè statu ancu aghjuntu u supportu per target.'cfg(..)'.rustdocflags in a cunfigurazione Cargo.Rustdoc gestisce avà a ducumentazione in modu più precisu.
E note API obsolete sò avà rese cum'è documentazione regulare, senza u trattamentu speciale precedente via white-space: pre-wrap. Inoltre, rustdoc ùn linta più missing_doc_code_examples per l'elementi in impl, è i metudi è e funzioni associate sò avà separati in a barra laterale di a documentazione.Possibili incompatibilità.
A versione cuntene parechji cambiamenti chì ponu cumparisce in u codice micca standard: u layout di certi enum #[repr(Int)] hè statu currettu in casi estremi, è certi cast unsize inutili in Pin sò stati disattivati. , E compilazioni di WebAssembly si bloccanu avà nantu à simboli indefiniti, l'attributu #![reexport_test_harness_main] stabilizatu accidentalmente hè statu di novu limitatu da e funzionalità, l'opzione -Csoft-float hè stata rimossa è a versione minima di LLVM esterna hè stata aumentata à 21. Per AVR, u tipu c_double hè statu cambiatu in f32, postu chì i C doubles sò 32-bit per difettu nantu à questi target.
Source: linux.org.ru
