Roest 1.96.0

Het persbericht is gepubliceerd. Roest 1.96.0 — De nieuwste stabiele versie van de programmeertaal Rust. De update is uitgebracht. 28 mei 2026 jaarHet kan worden geïnstalleerd met het standaard commando `rustup update stable`. De belangrijkste wijzigingen omvatten nieuwe bereiktypen in `core::range`, stabilisatie van patroonmatchingmacro's, verbetering van het bouwgedrag van WebAssembly en oplossingen voor twee kwetsbaarheden in Cargo.

Grote veranderingen

  • Nieuwe bereiktypen core::range::Range*.
    Nieuwe bereiktypen zijn gestabiliseerd in de standaardbibliotheek: core::range::Range, RangeFrom, RangeInclusive en de bijbehorende iterators. In tegenstelling tot de oude typen uit core::ops implementeren de nieuwe bereiken niet direct Iterator, maar worden ze via IntoIterator naar een iterator geconverteerd. Hierdoor zijn deze bereiken kopieerbaar, wat handig is bij het opslaan van een bereik als een structuurveld. Syntaxis zoals 0..1 creëert momenteel de oude bereiktypen, maar het is de bedoeling dat dit in een toekomstige versie van de taal wordt gemigreerd naar de nieuwe typen.

  • Assert_matches! en debug_assert_matches! zijn toegevoegd.
    Met nieuwe macro's kunt u controleren of een waarde overeenkomt met een bepaald patroon. Dit is vergelijkbaar met `assert!(matches!(…))`, maar in geval van een fout wordt een debug-weergave van de waarde afgedrukt, wat de diagnose vereenvoudigt. Deze macro's zijn niet aan Prelude toegevoegd om conflicten met populaire crates van derden te voorkomen, dus moeten ze expliciet worden geïmporteerd vanuit `core` of `std`.

  • Het gedrag van WebAssembly-targets is gewijzigd.
    Rust geeft de parameter --allow-undefined niet langer door aan de linker voor WebAssembly-builds. Niet-gedefinieerde symbolen worden nu tijdens het linken als fouten behandeld, in plaats van automatisch te worden omgezet naar imports uit de module "env". Dit zou buildfouten en ongeldige symboolnamen eerder moeten opsporen. Het oude gedrag kan indien nodig worden hersteld met RUSTFLAGS=-Clink-arg=--allow-undefined of door de geïmporteerde wasm-module expliciet te specificeren met #[link(wasm_import_module = "env")].

  • Cargo heeft beveiligingsupdates ontvangen.
    Rust 1.96.0 verhelpt twee beveiligingslekken die gebruikers van externe registers treffen. CVE-2026-5223 Dit heeft te maken met de verwerking van symbolische links in crate-tarballs: een kwaadaardig pakket uit een externe registry zou de cache van een ander pakket uit dezelfde registry kunnen overschrijven. Vanaf Rust 1.96.0 weigert Cargo crate-archieven die symbolische links bevatten. CVE-2026-5222 Dit probleem houdt verband met URL-normalisatie in het sparse registry en kan er in zeldzame gevallen toe leiden dat een Cargo-token naar een kwaadwillende registry wordt gestuurd. Volgens het Rust-team ondervinden gebruikers van crates.io geen hinder van deze problemen.

  • Taalveranderingen.
    Het persbericht bevat: Diverse kleine correcties en verbeteringen: Het is nu mogelijk om expr-metavariabelen van macro's door te geven aan cfg, typeconversie in tuple-expressies is gecorrigeerd, zeldzame gevallen van onjuiste type-inferentiehints voor functieargumenten zijn verholpen, ondersteuning voor s390x-vectorregisters in inline assembly is toegevoegd en het is weer toegestaan ​​om ManuallyDrop-constanten als templates te gebruiken – dit verhelpt een regressie die in Rust 1.94.0 is geïntroduceerd.

  • Wijzigingen in compiler en platformen.
    Voor LinuxOndersteuning voor linkrelaxatie is ingeschakeld voor LoongArch-targets. Deze linkoptimalisatie vereenvoudigt bepaalde overgangen en aanroepen na de implementatie van de code. Voor riscv64gc-unknown-fuchsia is de basisconfiguratie bijgewerkt naar het RVA22-profiel met ondersteuning voor vectoruitbreidingen.

  • Standaard bibliotheekupdates.
    Ondersteuning voor het itereren over niet-nul gehele getallenreeksen is toegevoegd. De luie afhandeling van hostadressen in SGX via ToSocketAddr is ook verholpen, en de definitie van "leesbaar/schrijfbaar" geheugen is verduidelijkt in de documentatie en interne contracten: de null-pointer is verwijderd uit de algemene definitie en uitzonderingen worden nu afzonderlijk gespecificeerd voor specifieke methoden.

  • Gestabiliseerde API's.
    Tot de gestabiliseerde interfaces behoren assert_matches!, debug_assert_matches!, implementaties van From voor AssertUnwindSafe , LazyCell en LazyLock , evenals nieuwe bereiktypen en iterators van core::range, waaronder Range, RangeFrom, RangeToInclusive en hun iterators.

  • Cargo: Wijzigingen in afhankelijkheden en documentatie.
    Een afhankelijkheid kan nu zowel een Git-repository als een alternatieve registry specificeren: de Git-versie wordt lokaal gebruikt en de registry-versie tijdens het publiceren, vergelijkbaar met het gedrag van crates.io. Ondersteuning voor target.'cfg(..)'.rustdocflags in de Cargo-configuratie is ook toegevoegd.

  • Rustdoc verwerkt documentatie nu nauwkeuriger.
    Verouderde API-notities worden nu weergegeven als reguliere documentatie, zonder de voorheen toegepaste speciale verwerking via `white-space: pre-wrap`. Bovendien controleert rustdoc niet langer op ontbrekende `missing_doc_code_examples` voor elementen binnen `impl`, en worden methoden en bijbehorende functies nu gescheiden weergegeven in de documentatiezijbalk.

  • Mogelijke incompatibiliteiten.
    Deze release bevat diverse wijzigingen die mogelijk in niet-standaard code voorkomen: de opmaak van sommige #[repr(Int)] enumeraties is in extreme gevallen gecorrigeerd en enkele nutteloze casts zonder grootte in Pin zijn uitgeschakeld. WebAssembly-builds crashen nu bij ongedefinieerde symbolen, het per ongeluk gestabiliseerde attribuut #![reexport_test_harness_main] is opnieuw afgeschermd, de optie -Csoft-float is verwijderd en de minimale externe LLVM-versie is verhoogd naar 21. Voor AVR is het type c_double gewijzigd naar f32, aangezien C doubles standaard 32-bits zijn op deze platforms.

Bron: linux.org.ru

Koop betrouwbare hosting voor sites met DDoS-bescherming, VPS VDS-servers 🔥 Koop betrouwbare websitehosting met DDoS-bescherming, VPS- en VDS-servers | ProHoster