Software-update - Rust 1.96.0

zaterdag, 30 mei 2026 (16:14) - Tweakers

In dit artikel:

Rust 1.96 is uitgebracht en bevat meerdere stabiele API-wijzigingen, verbeteringen aan range-types, nieuwe assert-macros, een aanpassing voor WebAssembly-doelen en fixes voor twee securityproblemen in Cargo-registries. Rust — de taal bedacht door Graydon Hoare en verder ontwikkeld bij Mozilla — wordt onder andere gebruikt door Cloudflare, OVH, Deliveroo en Coursera, waardoor zulke releases impact hebben op veel productiesystemen.

Belangrijkste punten:
- Nieuwe range-types: Een set vervangende range-typen in core::range (zoals Range, RangeFrom en RangeInclusive met bijbehorende iterators) is gestabiliseerd. Deze typen implementeren IntoIterator in plaats van Iterator, waardoor ze Copy kunnen zijn. Dat maakt het mogelijk slice-accessors in Copy-structs op te slaan zonder begin/eind te splitsen. RangeInclusive heeft nu publieke velden; het oude gedrag blijft voorlopig beschikbaar onder core::range::legacy.* en range-syntax (bijv. 0..1) produceert nog de legacy-typen totdat een toekomstige editie wordt aangepast. Bibliotheekontwerpers wordt aangeraden API’s generiek te accepteren via impl RangeBounds of concreet de nieuwe ranges te gebruiken.
- assert_matches!-macros: assert_matches! en debug_assert_matches! zijn toegevoegd om te controleren of een waarde een patroon matcht; bij mismatch tonen ze een Debug-weergave van de waarde. Ze worden niet automatisch in de prelude geplaatst om naamconflicten met derden te voorkomen; importeer ze expliciet uit core of std.
- WebAssembly-linkerwijziging: WebAssembly-doelen zullen voortaan geen --allow-undefined meer meekrijgen bij linken. Ongedefinieerde symbolen vormen nu linkerfouten in plaats van impliciete imports uit de "env"-module. Dit vangt build- en configuratiefouten eerder op. Wie het oude gedrag wil terugzetten kan dat via RUSTFLAGS=-Clink-arg=--allow-undefined of door expliciet #[link(wasm_import_module = "env")] te gebruiken.
- Beveiligingsfixes: Twee Cargo-advisories (CVE-2026-5223: symlink-extractie, medium; CVE-2026-5222: URL-normalisatie/authenticatie, laag) zijn verholpen; gebruikers van crates.io zijn niet getroffen.

Verder zijn diverse kleinere API’s en conversies gestabiliseerd (onder andere From-implementaties voor AssertUnwindSafe, LazyCell en LazyLock, en extra core::range-iterators). Voor volledige details wordt verwezen naar de changelogs van Rust, Cargo en Clippy.