Rust 1.96.0

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.
    Rust 1.96.0-s suleti kaks haavatavust, mis puudutavad kolmandate registrite kasutajaid. CVE-2026-5223 on seotud symlinkide töötlemisega tar-arkivides crate: pahatahtlik pakett kolmandast registrist vĂ”is kirjutada ĂŒle teise paketi vahehoidla samalt registrilt. Alates Rust 1.96.0-st keeldub Cargo crate-arkivide eest, kus on symlink. CVE-2026-5222 on seotud sparse registri URL-i normaliseerimisega ja harvadel juhtudel vĂ”is see viia Cargo tokeni saatmise pahatahtlikku registrisse. Crates.io kasutajaid ei puudutama need probleemid, teatas Rusti meeskond.

  • 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

Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid đŸ”„ Osta usaldusvÀÀrne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster