Avalikustatud versioon Rust 1.96.0 â uus stabiilne versioon programmeerimiskeelest Rust. Uuendus ilmus 28. mai 2026; selle vĂ”ib installida tavalise kĂ€suga rustup update stable. Peamised muudatused on uued vahemik tĂŒĂŒbid core::range, makrode stabiliseerimine mustrite kontrollimiseks, WebAssembly sĂŒsteemide kĂ€itumise karmistamine ja kaks haavatavuse parandust Cargo's.
Olulised muudatused
Uued vahemik tĂŒĂŒbid core::range::Range*.
Standardteegis on stabiliseeritud uued vahemiku variandid: core::range::Range, RangeFrom, RangeInclusive ja nendega seotud ĐžŃĐ”ŃаŃĐŸŃid. Erinevalt vanadest tĂŒĂŒpide core::ops-i, ei rakenda uued vahemikud Iteratorit otse, vaid muudetakse Iteratoriks lĂ€bi IntoIterator. TĂ€nu sellele vĂ”ivad sellised vahemikud olla Copy, mis on mugav nĂ€iteks, kui salvestada vahemik struktuuri vĂ€ljana. SĂŒntaks, nagu 0..1, genereerib endiselt vanad vahemiku tĂŒĂŒbid, kuid keele tulevases redaktsioonis plaanitakse see ĂŒle viia uutele tĂŒĂŒpidele.Lisatud assert_matches! ja debug_assert_matches!.
Uued makrod vĂ”imaldavad kontrollida, kas vÀÀrtus vastab antud mustrile. TĂ€henduse poolest sarnaneb see assert!(matches!(âŠ)), kuid vigade korral kuvatakse vÀÀrtuse Debug-esitus, mis lihtsustab tĂ”rkeotsingut. Prelude makrode lisamine vĂ€ltis populaarsete kolmandate osapoolte crate'ide konfliktide vĂ€ltimiseks, seega tuleb neid selgelt importida core'ist vĂ”i std'ist.WebAssembly sihtmĂ€rkide kĂ€itumist on muudetud.
Rust ei edasta enam linkijale âallow-undefined WebAssembly kogumite jaoks. NĂŒĂŒd loetakse linkimise ajal mÀÀramata sĂŒmbolid veaks, mitte ei muudetud automaatselt imporditeks, mis on moodul "env". See peaks varakult tuvastama koostamisvead ja vale sĂŒmbolite nimed. Vana kĂ€itumise saab vajadusel taastada, kasutades RUSTFLAGS=-Clink-arg=âallow-undefined, vĂ”i selgelt mÀÀrata imporditava wasm-mooduli kaudu #[link(wasm_import_module = "env")]Cargo sai turvaparandusi.
Muutused keeles.
VĂ€ljalaskesse kuuluvad mitmed punktiga parandused ja laiendused: macrode expr-metamuutujate edastamine cfg-sse on lubatud, never-type viimine tuple vĂ€ljendites on korrigeeritud, parandatud on haruldased juhtumid vale tĂŒĂŒbi vĂ€ljastamise vihjeid funktsioonide argumentide jaoks, s390x vektori registeride toetus on lisatud inline assemblys, samuti on taas lubatud kasutada ManuallyDrop tĂŒĂŒpi konstante mallidena â see parandab regressiooni, mis tekkis Rust 1.94.0-s.Muutused kompilaatoris ja platvormides.
Linuxi sihtmĂ€rkide jaoks LoongArchil on sisse lĂŒlitatud linkide lĂ”dvendamise tugi â linkimistootmine, mis vĂ”imaldab lihtsustada teatud ĂŒleminekuid ja viiteid pĂ€rast koodi paigutamist. riscv64gc-unknown-fuchsia jaoks on aluseks olev konfiguratsioon uuendatud profiilile RVA22 vektorite laienduste toega.Standardbiblioteka uuendused.
Lisatud tugi NonZero-tĂ€isarvude vahemike iteratsiooniks. Samuti on parandatud hosti aadresside laisk töötlemine SGX-i kaudu ToSocketAddr, ning dokumentatsioonis ja sisemistes lepingutes on tĂ€psustatud mĂ€lu mÀÀratlemist, mis on "lugemiseks/kirjutamiseks lubatud": nullviide on ĂŒldmÀÀratlemisest vĂ€lja jĂ€etud, erandid on spetsiifiliselt toodud konkreetsete meetodite jaoks.Stabiliseeritud API-d.
Stabiliseeritud liideste seas on assert_matches!, debug_assert_matches!, Implementatsioonid From<T> jaoks AssertUnwindSafe<T>, LazyCell<T, F> ja LazyLock<T, F>, ning uued tĂŒĂŒbid ja vahemiku iteratoorid core::range'ist, sealhulgas Range, RangeFrom, RangeToInclusive ja nende iteratoorid.Cargo: muudatused sĂ”ltuvustes ja dokumentatsioonis.
NĂŒĂŒd vĂ”ib sĂ”ltuvus korraga viidata nii Git-i hoidlarile kui alternatiivsele registry'le: kohaliku töötamise korral kasutatakse Git-i versiooni ja avaldamise korral registry versiooni, sarnaselt crates.io kĂ€itumisele. Samuti on lisatud tugi target.âcfg(..)â.rustdocflags Cargo konfiguratsioonis.Rustdoc on hakanud dokumentatsiooni hoolikamalt töötlema.
Deprekeeritud API mĂ€rkmed renderdatakse nĂŒĂŒd tavalise dokumentatsioonina, ilma varasema erilise töötlemiseta lĂ€bi white-space: pre-wrap. Lisaks ei teata rustdoc enam lint missing_doc_code_examples elementide kohta impl sees ning dokumentatsiooni kĂŒlgpaneelis jagunevad meetodid ja seotud funktsioonid eraldi.VĂ”imalikud ĂŒhilduvuse probleemid.
VĂ€ljal on mitmeid muudatusi, mis vĂ”ivad ilmneda ebatĂŒĂŒpilises koodis: mĂ”ned #[repr(Int)] enum'i paigutused on ÀÀrmuslikes olukordades parandatud, mĂ”ned kasutu unsize-konversioonid Pin<Foo>'s on keelatud, WebAssembly kogud kukuvad nĂŒĂŒd mÀÀramatute sĂŒmbolite korral kokku, juhuslikult stabiliseeritud atribuut #![reexport_test_harness_main] on taas sulgunud feature gate'iga, parameeter -Csoft-float on eemaldatud ja vĂ€line LLVM minimaalne versioon on tĂ”stetud 21-le. AVR-i jaoks on c_double tĂŒĂŒp muudetud f32-ks, kuna nende jaoks on C double vaikimisi 32-bitine.
Allikas: linux.org.ru
