Rust 1.96.0

Publicatie van de release Rust 1.96.0 — van de nieuwste stabiele versie van de programmeertaal Rust. De update is uitgebracht 28 mei 2026; deze kan worden geïnstalleerd met de standaard opdracht rustup update stable. De belangrijkste veranderingen zijn nieuwe typen bereiken in core::range, stabilisatie van macro's voor patroonovereenstemming, strengere gedragingen van WebAssembly-bundels en oplossingen voor twee kwetsbaarheden in Cargo.

Belangrijkste wijzigingen

  • Nieuwe typen bereiken core::range::Range*.
    Er zijn nieuwe soorten bereiken 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 Iterator niet rechtstreeks, maar worden ze omgezet in een iterator via IntoIterator. Hierdoor kunnen deze bereiken Copy zijn, wat handig is, bijvoorbeeld bij het opslaan van een bereik als een veld in een structuur. De syntaxis zoals 0..1 creëert momenteel nog steeds de oude typen bereiken, maar in een toekomstige versie van de taal is het de bedoeling deze om te zetten naar de nieuwe typen.

  • assert_matches! en debug_assert_matches! zijn toegevoegd.
    De nieuwe macro's maken het mogelijk te controleren of een waarde overeenkomt met een bepaald patroon. Dit lijkt op assert!(matches!(…)), maar bij een fout wordt de Debug-representatie van de waarde weergegeven, wat de diagnose vergemakkelijkt. De macro's zijn niet aan de prelude toegevoegd om conflicten met populaire externe crate's te voorkomen, dus ze moeten expliciet worden geïmporteerd uit core of std.

  • Het gedrag van WebAssembly-doelen is gewijzigd.
    Rust geeft niet langer de linker de optie —allow-undefined voor WebAssembly-bundels. Nu worden niet-gedefinieerde symbolen bij het linken beschouwd als een fout, in plaats van automatisch omgezet in importen uit het "env"-module. Dit zou eerder foutmeldingen aan het licht moeten brengen en verkeerde symbolenamen. Het oude gedrag kan indien nodig worden hersteld via RUSTFLAGS=-Clink-arg=—allow-undefined of door het te importeren wasm-module expliciet aan te geven via #[link(wasm_import_module = "env")]

  • Cargo heeft beveiligingspatches ontvangen.
    In Rust 1.96.0 zijn twee kwetsbaarheden opgelost die gebruikers van externe registries aangaan. CVE-2026-5223 is gerelateerd aan het verwerken van symlinks binnen tar-archieven van crate: een kwaadaardig pakket uit een externe registry kon de cache van een ander pakket uit dezelfde registry overschrijven. Beginnen met Rust 1.96.0 weigert Cargo crate-archieven met symlinks. CVE-2026-5222 is gerelateerd aan de normalisatie van URL's van sparse registry en kon onder zeldzame omstandigheden leiden tot het verzenden van een Cargo-token naar een kwaadaardige registry. Gebruikers van crates.io zijn volgens het Rust-team niet door deze problemen getroffen.

  • Wijzigingen in de taal.
    De release bevat enkele gerichte bugfixes en uitbreidingen: de overdracht van expr-meta-variabelen van macro's in cfg is toegestaan, de conversie van never-type in tuple-expressies is gecorrigeerd, zeldzame gevallen van verkeerde type-output suggesties voor functieargumenten zijn verholpen, ondersteuning voor vectorregisters s390x in inline assembly is toegevoegd, en het gebruik van constants van het type ManuallyDrop als sjablonen is opnieuw toegestaan — dit verhelpt een regressie die is verschenen in Rust 1.94.0.

  • Wijzigingen in de compiler en platforms.
    Voor Linux-doelen op LoongArch is ondersteuning voor link relaxation ingeschakeld — een optimalisatie van de linking die het vereenvoudigt om sommige sprongen en adressen na het plaatsen van de code te verwerken. Voor riscv64gc-unknown-fuchsia is de basisconfiguratie bijgewerkt naar het RVA22-profiel met ondersteuning voor vectoruitbreidingen.

  • Updates van de standaardbibliotheek.
    Ondersteuning voor iteratie over bereik van NonZero-gehele getallen is toegevoegd. Bovendien is de uitgestelde verwerking van hostadressen in SGX via ToSocketAddr gecorrigeerd, en is in de documentatie en interne contracten de definitie van geheugen 'toegestaan voor lezen/schrijf' verduidelijkt: een nul-pointer is uitgesloten van de algemene definitie en uitzonderingen worden apart aangegeven voor specifieke methoden.

  • Gestabiliseerde API's.
    Onder de gestabiliseerde interfaces zijn assert_matches!, debug_assert_matches!, implementaties van From voor AssertUnwindSafe, LazyCell en LazyLock, evenals nieuwe types en iterators van core::range, inclusief Range, RangeFrom, RangeToInclusive en hun iterators.

  • Cargo: wijzigingen voor afhankelijkheden en documentatie.
    Een afhankelijkheid kan nu tegelijkertijd een Git-repository en een alternatieve registry opgeven: lokaal wordt de Git-versie gebruikt, en bij publicatie de versie uit de registry, vergelijkbaar met het gedrag van crates.io. Daarnaast is ook ondersteuning voor target.'cfg(..)'.rustdocflags aan de Cargo-configuratie toegevoegd.

  • Rustdoc verwerkt documentatie nu netter.
    Notities over deprecated API worden nu gerenderd als gewone documentatie, zonder de eerdere speciale behandeling via white-space: pre-wrap. Bovendien geeft rustdoc geen lint missing_doc_code_examples meer voor elementen binnen impl, en worden methoden en geassocieerde functies in de zijbalk van de documentatie afzonderlijk gescheiden.

  • Mogelijke incompatibiliteiten.
    In de release zijn er verschillende wijzigingen die zich kunnen voordoen in atypische code: de indeling van sommige #[repr(Int)] enums is in grensgevallen gecorrigeerd, sommige nutteloze unsize-omzetten in Pin zijn verboden, WebAssembly-bundels crashen nu bij ongedefinieerde symbolen, het per ongeluk gestabiliseerde attribuut #![reexport_test_harness_main] is opnieuw afgesloten met een feature gate, de parameter -Csoft-float is verwijderd en de minimale versie van externe LLVM is verhoogd naar 21. Voor AVR is het type c_double gewijzigd in f32, aangezien C double standaard 32-bits is op deze doelplatforms.

Bron: linux.org.ru

Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers 🔥 Koop betrouwbare webhosting met bescherming tegen DDoS, VPS VDS servers | ProHoster