Catalog / Rust

Rust breaking changes

The 5 releases whose own notes call out a breaking change, out of 61 the archive holds. Scattered one per release page, this is a run nobody can see; gathered, it is the shape of how often Rust asks you to change your code.

Tagged breaking
5 of 61 releases
Roughly
1 in 12 releases held here
Most recent
1 Oct 2026 12 days ago
Across
48 months back to 3 Nov 2022

How this is decided

A release appears here because the word breaking is in the notes its publisher wrote, not because anyone here read the diff. That cuts both ways. A release that changed an API without using the word is missing from this page, and a release that used the word about something minor is on it. It is the publisher’s own signal, reported rather than judged, which is the same rule the security page follows.

Newest first

All Rust releases
1.99.0breakingaddedfixed

Language Add allow-by-default raw_borrows_via_references lint that checks for references that decay immediately into raw borrows Extend unconditional_panic lint to function calls that panic when the chunks/windows size is zero Stabilize C-v

1.97.0breakingaddedchanged

Language Consider Result<T, Uninhabited> and ControlFlow<Uninhabited, T> to be equivalent to T for must use lint Add allow-by-default dead_code_pub_in_binary lint for unused pub items in binary crates Stabilize the div32, lam-bh, lamcas, ld

1.96.0breakingsecurityadded

Language Allow passing expr metavariable to cfg Always coerce never types in tuple expressions Avoid incorrect inference guidance of function arguments in rare cases Support s390x vector registers in inline assembly Allow using constants of

1.89.0breakingaddedfixed

Language Stabilize explicitly inferred const arguments (feature(generic_arg_infer)) Add a warn-by-default mismatched_lifetime_syntaxes lint. This lint detects when the same lifetime is referred to by different syntax categories between func

1.65.0breakingaddedfixed

Language Error on as casts of enums with #[non_exhaustive] variants Stabilize let else Stabilize generic associated types (GATs) Add lints let_underscore_drop and let_underscore_lock from Clippy Stabilize breaking from arbitrary labeled blo