Avaldamine Rust 1.96.0 â uus stabiilne versioon programmeerimiskeelest Rust. Uuendus on vĂ€lja antud 28. mai 2026; selle installimiseks saab kasutada standardset kĂ€sku rustup update stable. Peamised muudatused hĂ”lmavad uusi vahemikke core::range, makrode stabiliseerimist mustrite vastavuse kontrollimiseks, WebAssembly kogumite kĂ€itumise karmistamist ning kahte haavatavust Cargo parandamist.
Peamised muudatused
Uued vahemikud core::range::Range*.
Standardraamatukogus on stabiliseeritud uued vahemike variandid: core::range::Range, RangeFrom, RangeInclusive ja nendega seotud iteratoorid. Erinevalt vanadest tĂŒĂŒpidest core::ops, ei rakenda uued vahemikud Iteratorit otse, vaid muudetakse iteratooriks lĂ€bi IntoIterator. SeetĂ”ttu vĂ”ivad sellised vahemikud olla Copy, mis on mugav, nĂ€iteks vahemiku struktuuri vĂ€lja hoidmisel. SĂŒntaks nagu 0..1 genereerib seni vanad vahemikud, kuid tulevaste keele redaktsioonide plaanitakse see ĂŒle viia uutele tĂŒĂŒpidele.Lisatud assert_matches! ja debug_assert_matches!:
Uued makrod vĂ”imaldavad kontrollida, kas vÀÀrtus vastab mÀÀratud mustrile. Sisu poolest sarnaneb see assert!(matches!(âŠ)), kuid vea korral kuvatakse vÀÀrtuse Debug-esitlus, mis lihtsustab diagnostikat. Prelude'i makrosid ei lisatud, et mitte konflikteerida populaarsete kolmandate osapoolte crate'idega, seega tuleb need selgelt importida core'ist vĂ”i std'ist.Muudetud WebAssembly sihtmĂ€rkide kĂ€itumist.
Rust ei edasta enam linkijale âallow-undefined WebAssembly kogumite jaoks. NĂŒĂŒd peetakse linkimise ajal mÀÀratlemata mĂ€rke veaks, mitte ei muudetud automaatselt importideks moodulist "env". See peaks varakult tuvastama kogumise ja vale sĂŒmbolite nimede vead. Vana kĂ€itumist vĂ”ib vajadusel tagasi tuua RUSTFLAGS=-Clink-arg=âallow-undefined vĂ”i selgelt mÀÀratleda imporditava wasm-mooduli kaudu #[link(wasm_import_module = "env")] .Cargo sai turvaparandusi.
Keeles toimunud muutused.
VĂ€ljalaske koosseisu kuulus mĂ”ningad punktmuudatused ja laiendused: expr-muutuja makrode edastamine cfg-s on lubatud, never-tĂŒĂŒbi konverteerimine tuplituustes on korrigeeritud, haruldased vale tĂŒĂŒbi vĂ€ljastamise vihjed funktsioonide argumentide jaoks on parandatud, s390x vektori register on inline assemblys taas lubatud, samuti on uuesti lubatud kasutada ManuallyDrop tĂŒĂŒpi konstandte mallidena â see parandab regressiooni, mis ilmus Rust 1.94.0-s.Komplilaatori ja platvormide muutused.
Linuxi eesmĂ€rkide jaoks on LoongArchis lisatud linkimise lĂ”dvestuse tugi â linkimise optimeerimine, mis vĂ”imaldab lihtsustada teatud ĂŒleminekuid ja viiteid pĂ€rast koodi paigutamist. riscv64gc-unknown-fuchsia jaoks on pĂ”hikonfiguratsioon uuendatud RVA22 profiiliks, mis toetab vektori laiendusi.Standardteegi vĂ€rskendused.
Lisatud tugi NonZero-tĂ€isarvude vahemike iteratsioonile. Samuti on parandatud SGX-i hosti aadresside viivitustatud töötlemine lĂ€bi ToSocketAddr, ning dokumentatsioonis ja sisemistes lepingutes on tĂ€psustatud mĂ€lu mÀÀratlemine, âlugemis-/kirjutamisĂ”iguslikâ: nullviide on vĂ€lja jĂ€etud ĂŒldisest mÀÀratlemisest, ning erandid on eraldi vĂ€lja toodud konkreetsete meetodite jaoks.Stabiliseeritud API-d.
Stabiliseeritud liideste seas on assert_matches!, debug_assert_matches!, From<T> rakendused AssertUnwindSafe<T>, LazyCell<T, F> ja LazyLock<T, F>, samuti uued tĂŒĂŒbid ja vahemike iteratsioonid core::range-st, sealhulgas Range, RangeFrom, RangeToInclusive ja nende iteratsioonid.Cargo: muudatused sĂ”ltuvustes ja dokumentatsioonis.
NĂŒĂŒd saab sĂ”ltuvus samal ajal osutada Git-repositoriumi ja alternatiivsele registerile: kohapeal kasutatakse Git-versiooni, ja avaldamisel kasutatakse registeri versiooni, sarnaselt kĂ€itumisele crates.io-iga. Samuti on lisatud tugi target.âcfg(..)â.rustdocflags konfiguratsioonis Cargo.Rustdoc hakkas dokumentatsiooni hoolikamalt töötlema.
Deprecated API mĂ€rkused renderdatakse nĂŒĂŒd nagu tavaline dokumentatsioon, ilma varasema erilise töötlemiseta white-space: pre-wrap kaudu. Lisaks ei genereeri rustdoc enam lint missing_doc_code_examples impl sees olevate elementide jaoks, ja dokumentatsiooni kĂŒlgpanelis eraldatakse meetodid ja seotud funktsioonid eraldi.VĂ”imalikud ĂŒhilduvuse probleemid.
VĂ€ljaandes on mitu muudatust, mis vĂ”ivad ilmuda ebatĂŒĂŒpilises koodis: korrigeeritud on teatud #[repr(Int)] enum'i paigutus ÀÀrmuslikes olukordades, keelatud on mĂ”ned kasutud unsize-tĂŒĂŒbi teisendused Pin s, WebAssembly kogumid kukuvad nĂŒĂŒd kokku mÀÀramata sĂŒmbolite korral, juhuslikult stabiliseeritud atribuuti #![reexport_test_harness_main] on jĂ€lle suletud feature gate'iga, eemaldatud on parameeter -Csoft-float ning vĂ€list LLVM minimaalne versioon on tĂ” statud 21-le. AVR jaoks on c_double tĂŒĂŒp muudetud f32-ks, kuna nende sihtide puhul on C double vaikimisi 32-bitine.
Allikas: linux.org.ru
