Rūdys 1.96.0

Leidimas buvo paskelbtas Rūdys 1.96.0 — naujausia stabili „Rust“ programavimo kalbos versija. Išleistas atnaujinimas. 28 gegužės 2026 metų; jį galima įdiegti naudojant standartinę „rustup update stable“ komandą. Pagrindiniai pakeitimai apima naujus diapazonų tipus branduolyje::range, šablonų atitikimo makrokomandų stabilizavimą, „WebAssembly“ kompiliavimo elgsenos sugriežtinimą ir dviejų „Cargo“ pažeidžiamumų pataisymus.

Pagrindiniai pokyčiai

  • Nauji diapazonų tipai core::range::Range*.
    Standartinėje bibliotekoje buvo stabilizuoti nauji diapazonų tipai: core::range::Range, RangeFrom, RangeInclusive ir su jais susiję iteratoriai. Skirtingai nuo senų tipų iš core::ops, naujieji diapazonai tiesiogiai neįdiegia iteratoriaus, o konvertuojami į iteratorių naudojant IntoIterator. Tai leidžia šiuos diapazonus kopijuoti, o tai patogu, pavyzdžiui, saugant diapazoną kaip struktūros lauką. Sintaksė, tokia kaip 0..1, šiuo metu sukuria senus diapazonų tipus, tačiau planuojama ją perkelti į naujus tipus būsimoje kalbos versijoje.

  • Pridėtos „assert_matches!“ ir „debug_assert_matches!“.
    Naujos makrokomandos leidžia patikrinti, ar reikšmė atitinka nurodytą šabloną. Tai panašu į funkciją assert!(matches!(…)), tačiau klaidos atveju atspausdinamas derinimo reikšmės atvaizdavimas, taip supaprastinant diagnostiką. Šios makrokomandos nebuvo pridėtos prie „Prelude“, kad būtų išvengta konfliktų su populiariais trečiųjų šalių dėžėmis, todėl jas reikia importuoti iš pagrindinės arba standartinės versijos.

  • Pakeistas „WebAssembly“ taikinių elgesys.
    „Rust“ nebeperduoda „--allow-undefined“ į susiejimo programą, skirtą „WebAssembly“ kompiliacijoms. Neapibrėžti simboliai dabar susiejimo metu traktuojami kaip klaidos, o ne automatiškai konvertuojami į importuotus iš „env“ modulio. Tai turėtų anksčiau aptikti kompiliavimo klaidas ir neteisingus simbolių pavadinimus. Seną veikimą, jei reikia, galima grąžinti naudojant RUSTFLAGS=-Clink-arg=--allow-undefined arba aiškiai nurodant importuotą „wasm“ modulį naudojant #[link(wasm_import_module = "env")].

  • Krovinių gabenimui atlikti saugumo pataisymai.
    „Rust 1.96.0“ ištaiso du pažeidžiamumus, paveikiančius trečiųjų šalių registrų naudotojus. CVE-2026-5223 Dėl simbolinių nuorodų tvarkymo „crate“ archyvuose: kenkėjiškas paketas iš trečiosios šalies registro gali perrašyti kito to paties registro paketo talpyklą. Nuo „Rust 1.96.0“ versijos „Cargo“ atmeta „crate“ archyvus, kuriuose yra simbolinių nuorodų. CVE-2026-5222 Ši problema susijusi su URL normalizavimu išretintame registre ir retais atvejais gali lemti „Cargo“ prieigos rakto siuntimą į kenkėjišką registrą. Pasak „Rust“ komandos, „crates.io“ vartotojams šios problemos įtakos neturi.

  • Kalbos pokyčiai.
    Leidime yra: Keletas nedidelių pataisymų ir patobulinimų: leista perduoti makrokomandų „expr“ metakintamuosius funkcijai „cfg“, ištaisytas niekada netipo konvertavimas rinkinių išraiškose, ištaisyti reti neteisingų tipų išvados užuominų atvejai funkcijų argumentams, pridėta s390x vektorių registrų palaikymas įterptajame surinkime ir vėl leista naudoti „ManuallyDrop“ konstantas kaip šablonus – tai ištaiso regresiją, įvestą „Rust 1.94.0“ versijoje.

  • Kompiliatoriaus ir platformų pakeitimai.
    Už Linux„LoongArch“ taikiniams įjungtas susiejimo atpalaidavimo palaikymas – susiejimo optimizavimas, kuris supaprastina kai kuriuos perėjimus ir iškvietimus po kodo diegimo. „riscv64gc-unknown-fuchsia“ bazinė konfigūracija atnaujinta į RVA22 profilį su vektorių plėtinių palaikymu.

  • Standartiniai bibliotekos atnaujinimai.
    Pridėtas iteracijos per „NonZero“ sveikųjų skaičių diapazonus palaikymas. Taip pat ištaisytas neatidėliotinas pagrindinių kompiuterių adresų apdorojimas SGX kalboje naudojant „ToSocketAddr“, o dokumentacijoje ir vidinėse sutartyse patikslintas „skaitomos/rašomos“ atminties apibrėžimas: iš bendro apibrėžimo pašalintas nulinis rodyklės elementas, o išimtys dabar atskirai nurodomos konkretiems metodams.

  • Stabilizuotos API.
    Tarp stabilizuotų sąsajų yra „assert_matches!“, „debug_assert_matches!“, „From“ įgyvendinimai. skirta „AssertUnwindSafe“ , LazyCell ir „LazyLock“ , taip pat naujus diapazonų tipus ir iteratorius iš core::range, įskaitant Range, RangeFrom, RangeToInclusive ir jų iteratorius.

  • Krovinys: priklausomybių ir dokumentacijos pakeitimai.
    Priklausomybėje dabar galima nurodyti ir „Git“ saugyklą, ir alternatyvų registrą: „Git“ versija bus naudojama lokaliai, o registro versija – publikavimo metu, panašiai kaip naudojant „crates.io“. Taip pat pridėtas palaikymas funkcijai target.'cfg(..)'.rustdocflags „Cargo“ konfigūracijoje.

  • „Rustdoc“ dabar tiksliau tvarko dokumentaciją.
    Nebepalaikomos API pastabos dabar pateikiamos kaip įprasta dokumentacija, be ankstesnio specialaus apdorojimo naudojant tarpus tarp išankstinio įvyniojimo funkciją. Be to, „rustdoc“ neberodo „missing_doc_code_examples“ elementams impl viduje, o metodai ir susijusios funkcijos dabar yra atskirti dokumentacijos šoninėje juostoje.

  • Galimi nesuderinamumai.
    Šiame leidime yra keletas pakeitimų, kurie gali būti matomi nestandartiniame kode: kraštutiniais atvejais pataisytas kai kurių #[repr(Int)] išvardijimų išdėstymas, o kai kurie nenaudingi dydžio keitimo perskaičiavimai Pin buvo išjungti. „WebAssembly“ kompiliavimo versijos dabar stringa esant neapibrėžtiems simboliams, netyčia stabilizuotas atributas #![reexport_test_harness_main] vėl buvo apribotas, parinktis „-Csoft-float“ buvo pašalinta, o minimali išorinės LLVM versijos reikalavimas padidintas iki 21. AVR atveju „c_double“ tipas pakeistas į „f32“, nes C double'ai šiuose taikiniuose pagal numatytuosius nustatymus yra 32 bitų.

Šaltinis: linux.org.ru

Pirkite patikimą prieglobą svetainėms su DDoS apsauga, VPS VDS serveriais 🔥 Įsigykite patikimą svetainių talpinimą su DDoS apsauga, VPS VDS serveriais | ProHoster