Software-update - Rust 1.95.0
In dit artikel:
Rust 1.95 is uitgebracht en brengt meerdere taalkundige uitbreidingen en stabilisaties die vooral gericht zijn op ergonomie en lage-niveau API’s. Rust, bedacht door Graydon Hoare en verder ontwikkeld bij Mozilla, wordt al door bedrijven als Cloudflare, OVH, Deliveroo, Coursera en anderen ingezet; deze release bouwt voort op dat praktische gebruik.
Belangrijkste nieuwigheden
- cfg_select!: Een nieuwe macro die op compile-tijd kiest tussen configuratie‑armen (vergelijkbaar met het populaire cfg-if-crate maar met eigen syntax). De macro expandt naar de rechterkant van de eerste arm waarvan de voorwaarde waar is, en is bedoeld om platform- of target‑afhankelijke code overzichtelijker te maken.
- if-let-guards in match: Guard‑expressies mogen nu if let-patronen bevatten binnen match-armen. Daardoor kun je patronen combineren met extra patroonmatching in guards en beide bindings gebruiken in de arm. Let op: de compiler telt die matches nog niet mee voor exhaustiviteit (zoals bij gewone if-guards).
Groot aantal API’s gestabiliseerd
Rust 1.95 stabiliseert veel methoden en traits, met name rond laag-niveau geheugenconstructies en container‑operaties. Enkele categorieën en voorbeelden:
- MaybeUninit: meerdere From/AsRef/AsMut-implementaties.
- Cell: AsRef/AsMut-verbeteringen.
- Atomic types: nieuwe update/try_update-methoden voor verschillende atomic-typen.
- Collecties: muterende push/insert-varianten zoals Vec::push_mut, Vec::insert_mut, VecDeque- en LinkedList-mut-methoden.
- Core-range en iteratoren: RangeInclusive en RangeInclusiveIter.
- Onveilige helpers: as_ref_unchecked / as_mut_unchecked.
- Layout-helpers: dangling_ptr, repeat, repeat_packed, extend_packed.
Daarnaast zijn enkele API’s nu stabiel bruikbaar in const-contexten, onder andere fmt::from_fn en ControlFlow::is_break / is_continue.
Destabilisatie van JSON target specs
De mogelijkheid om op de stable toolchain een custom target-specificatie (JSON) door te geven aan rustc is verwijderd. Voor de meeste gebruikers verandert er niets: het bouwen van de standaardbibliotheek (inclusief core) vereiste al nightly-only features. De ontwikkelaars verzamelen gebruiksgevallen op een tracking-issue om te bepalen of sommige vormen van custom targets later terugkomen.
Verder
De release bevat nog veel meer kleine veranderingen en fixes in de compiler, Cargo en Clippy; wie dieper wil gaan kan de volledige releasenotes van Rust, Cargo en Clippy raadplegen.