Software-update - Rust 1.92.0

zaterdag, 13 december 2025 (12:14) - Tweakers

In dit artikel:

Rust 1.92 is uitgekomen; de taal — oorspronkelijk bedacht door Graydon Hoare en verder ontwikkeld bij Mozilla — blijft zich richten op veiligheid en efficiëntie en wordt al in productie gebruikt bij partijen als Cloudflare, OVH, Deliveroo en anderen. Deze uitgave brengt vooral compiler- en lint-gedreven stabilisaties en een aantal API-stabilisaties.

Belangrijkste punten
- Never-type lints: twee toekomstgerichte lints rondom het never-type zijn nu "deny-by-default". Dat betekent dat code die door deze lints wordt aangetroffen standaard tot een compile-fout leidt (maar de lints kunnen nog steeds lokaal uitgeschakeld worden). De checks worden alleen toegepast wanneer een crate direct gebouwd wordt, niet wanneer die als dependency wordt gecompileerd. Ongeveer 500 crates lijken op dit moment geraakt te worden; de taal- en compilerteams adviseren om gerapporteerde problemen te repareren ter voorbereiding op toekomstige stabilisatie van het never-type.
- unused_must_use aangepast: de unused_must_use-waarschuwing negeert voortaan Result (en ControlFlow) wanneer het fouttype niet “bewoonbaar” is — bijvoorbeeld bij core::convert::Infallible of het never-type (!). Dat voorkomt onnodige waarschuwingen voor waarden die in de praktijk nooit een fout kunnen bevatten, wat vooral handig is bij traits met een geassocieerd fouttype dat soms infallible is.
- Unwind-tables bij -Cpanic=abort op Linux: Rust 1.92 zet opnieuw standaard unwind-tabellen uit, ook als -Cpanic=abort is opgegeven, zodat backtraces weer werken. Wie die tabellen niet wil, kan ze expliciet uitschakelen met -Cforce-unwind-tables=no.
- Strengere validatie van attribuut-argumenten: de compiler is consequenter geworden in de behandeling van ingebouwde attributen; als voorbeeld is de controle op toegestane argumenten voor #[macro_export] aangescherpt en naar een deny-by-default lint opgewaardeerd (ook zichtbaar bij dependencies).
- API-stabilisaties: een reeks methoden en constructors is stabiel geworden, onder meer Box::new_zeroed / new_zeroed_slice, Rc/Arc new_zeroed en slices, NonZero::div_ceil, Location::file_as_c_str, RwLockWriteGuard::downgrade, enkele btree_map-insert_entry API’s en meerdere impls van Extend voor proc_macro::TokenStream. Daarnaast zijn rotatiefuncties (::rotate_left / ::rotate_right) nu stabiel in const-contexten.

Verder: voor een volledig overzicht van alle wijzigingen in Rust zelf, Cargo en Clippy verwijst de release-opmerking naar de uitgebreide changelogs. Ontwikkelaars wordt aangeraden de nieuwe lints en API’s te bekijken en crates indien nodig bij te werken om toekomstige brekende veranderingen te voorkomen.