Roes 1.96.0

Die vrystelling is gepubliseer Roes 1.96.0 — die nuutste stabiele weergawe van die Rust-programmeertaal. Die opdatering is vrygestel. 28 Mei 2026 jaar; dit kan geïnstalleer word met behulp van die standaard rustup update stable-opdrag. Die belangrikste veranderinge sluit in nuwe reekstipes in core::range, stabilisering van patroonooreenstemmingsmakro's, verskerping van WebAssembly-bougedrag en regstellings vir twee kwesbaarhede in Cargo.

Groot veranderinge

  • Nuwe reekstipes core::range::Range*.
    Nuwe reekstipes is in die standaardbiblioteek gestabiliseer: core::range::Range, RangeFrom, RangeInclusive, en hul geassosieerde iterators. Anders as die ou tipes van core::ops, implementeer die nuwe reekse nie Iterator direk nie, maar word dit via IntoIterator na 'n iterator omgeskakel. Dit laat hierdie reekse toe om kopieerbaar te wees, wat byvoorbeeld gerieflik is wanneer 'n reeks as 'n struktuurveld gestoor word. Sintaksis soos 0..1 skep tans die ou reekstipes, maar dit word beplan om na die nuwe tipes in 'n toekomstige weergawe van die taal gemigreer te word.

  • Het assert_matches! en debug_assert_matches! bygevoeg.
    Nuwe makro's laat jou toe om te kontroleer of 'n waarde ooreenstem met 'n gegewe patroon. Dit is soortgelyk in konsep aan assert!(matches!(…)), maar in die geval van 'n fout word 'n ontfoutingsvoorstelling van die waarde gedruk, wat diagnostiek vereenvoudig. Hierdie makro's is nie by Prelude gevoeg om konflikte met gewilde derdeparty-kratte te vermy nie, dus moet hulle eksplisiet vanaf core of std ingevoer word.

  • Het die gedrag van WebAssembly-teikens verander.
    Rust gee nie meer --allow-undefined aan die skakelaar vir WebAssembly-boue deur nie. Ongedefinieerde simbole word nou as foute tydens skakeling behandel, eerder as om outomaties omgeskakel te word na invoere vanaf die "env"-module. Dit behoort boufoute en ongeldige simboolname vroeër op te spoor. Die ou gedrag kan, indien nodig, teruggekeer word deur RUSTFLAGS=-Clink-arg=--allow-undefined te gebruik of deur die ingevoerde wasm-module eksplisiet te spesifiseer deur #[link(wasm_import_module = "env")] te gebruik.

  • Cargo het sekuriteitsoplossings ontvang.
    Rust 1.96.0 maak twee kwesbaarhede reg wat gebruikers van derdeparty-registers raak. CVE-2026-5223 Verwant aan die hantering van simskakels binne krat-tarballe: 'n kwaadwillige pakket van 'n derdeparty-register kan die kasgeheue van 'n ander pakket van dieselfde register oorskryf. Vanaf Rust 1.96.0 verwerp Cargo krat-argiewe wat simskakels bevat. CVE-2026-5222 Hierdie probleem hou verband met URL-normalisering in die yl register en kan onder seldsame omstandighede daartoe lei dat 'n Cargo-token na 'n kwaadwillige register gestuur word. Volgens die Rust-span word crates.io-gebruikers nie deur hierdie probleme geraak nie.

  • Veranderinge in taal.
    Die vrystelling sluit in: Verskeie klein regstellings en verbeterings: Toegelaat om expr-metaveranderlikes van makro's na cfg deur te gee, nooit-tipe-omskakeling in tupeluitdrukkings reggestel, seldsame gevalle van verkeerde tipe-inferensiewenke vir funksie-argumente reggestel, ondersteuning vir s390x-vektorregisters in inlyn-samestelling bygevoeg, en ManuallyDrop-konstantes as sjablone weer toegelaat - dit maak 'n regressie reg wat in Rust 1.94.0 bekendgestel is.

  • Veranderinge in samesteller en platforms.
    Vir LinuxSkakelontspanningsondersteuning is geaktiveer vir LoongArch-teikens—’n skakeloptimalisering wat sommige oorgange en oproepe na kode-ontplooiing vereenvoudig. Vir riscv64gc-unknown-fuchsia is die basiskonfigurasie opgedateer na die RVA22-profiel met ondersteuning vir vektoruitbreidings.

  • Standaard biblioteekopdaterings.
    Ondersteuning vir iterasie oor Nie-Nul heelgetalreekse is bygevoeg. Lui hantering van gasheeradresse in SGX via ToSocketAddr is ook reggestel, en die definisie van "leesbare/skryfbare" geheue is in die dokumentasie en interne kontrakte verduidelik: die nulwyser is uit die algemene definisie verwyder, en uitsonderings word nou afsonderlik vir spesifieke metodes gespesifiseer.

  • Gestabiliseerde API's.
    Onder die gestabiliseerde koppelvlakke is assert_matches!, debug_assert_matches!, implementerings van From vir AssertUnwindSafe , LuiSel en LazyLock , sowel as nuwe reekstipes en iterators van core::range, insluitend Range, RangeFrom, RangeToInclusive en hul iterators.

  • Vrag: Veranderinge aan afhanklikhede en dokumentasie.
    'n Afhanklikheid kan nou beide 'n Git-bewaarplek en 'n alternatiewe register spesifiseer: die Git-weergawe sal plaaslik gebruik word, en die registerweergawe sal tydens publikasie gebruik word, soortgelyk aan die gedrag met crates.io. Ondersteuning vir target.'cfg(..)'.rustdocflags in die Cargo-konfigurasie is ook bygevoeg.

  • Rustdoc hanteer nou dokumentasie meer akkuraat.
    Verouderde API-notas word nou as gewone dokumentasie weergegee, sonder die vorige spesiale verwerking via witspasie: vooromslag. Daarbenewens wys rustdoc nie meer missing_doc_code_examples vir elemente binne impl nie, en metodes en geassosieerde funksies word nou in die dokumentasie-kantbalk geskei.

  • Moontlike onverenigbaarhede.
    Die vrystelling bevat verskeie veranderinge wat in nie-standaard kode kan verskyn: die uitleg van sommige #[repr(Int)] enums is in uiterste gevalle reggestel, en sommige nuttelose ongeskaalde casts in Pin is gedeaktiveer. , WebAssembly-boue stort nou vas op ongedefinieerde simbole, die per ongeluk gestabiliseerde #![reexport_test_harness_main]-attribuut is weer funksie-beveilig, die -Csoft-float-opsie is verwyder, en die minimum eksterne LLVM-weergawe is verhoog na 21. Vir AVR is die c_double-tipe verander na f32, aangesien C-doubles standaard 32-bis op hierdie teikens is.

Bron: linux.org.ru

Koop betroubare hosting vir werwe met DDoS-beskerming, VPS VDS-bedieners 🔥 Koop betroubare webwerfhosting met DDoS-beskerming, VPS VDS-bedieners | ProHoster