Emerging
May 28, 20261
50%
Rust Programming Language Version 1.96 Released

Rust 1.96.0 has been released, featuring stabilized Copy-implementing Range types, new assert matching macros for improved error diagnostics, and changes to WebAssembly linker behavior that now treat undefined symbols as errors instead of imports.

Quick Facts
Who
Rust team
What
Released Rust version 1.96.0
When
May 28, 2026
- Released Rust version 1.96.0
- Stabilized new Range types implementing Copy
- Introduced assert_matches! and debug_assert_matches! macros
- Changed WebAssembly linker behavior for undefined symbols
- Rust team
The Rust team has announced the release of Rust 1.96.0, a new version of the programming language designed to empower developers to build reliable and efficient software. The release is available for download and can be obtained by existing users via the rustup update mechanism with the command `rustup update stable`.
Rust 1.96.0 introduces several significant features and improvements. The most notable addition is the stabilization of new Range types through RFC 3550, which provide Copy implementations. These new types—core::range::Range, core::range::RangeFrom, and core::range::RangeInclusive—differ from the legacy versions by implementing IntoIterator rather than Iterator directly. This change allows developers to store slice accessors in Copy types without needing to split start and end fields separately. The new RangeInclusive type also makes its fields public, a departure from the legacy version that had hidden this implementation detail.
Additional features in this release include new assert matching macros. The `assert_matches!` and `debug_assert_macros!` macros check whether a value matches a given pattern and provide improved Debug representations when failures occur, making it easier to diagnose issues. These macros were not added to the standard prelude to avoid conflicts with existing third-party crates offering similarly named macros.
The release also brings changes to WebAssembly targets. Previously, WebAssembly targets would pass `--allow-undefined` to the linker, converting undefined symbols into imports. Rust 1.96.0 changes this behavior so that undefined symbols now result in linker errors, helping developers catch bugs earlier and prevent accidental issues. Developers who need the previous behavior can re-enable it through the `RUSTFLAGS=-Clink-arg=--allow-undefined` flag or by using the `#[link(wasm_import_module = "env")]` attribute in source code.
The Rust team encourages users to update to the latest version and invites developers interested in testing future releases to consider switching to the beta or nightly channels to help identify and report bugs.
Topics
Why This Matters
Rust 1.96.0 brings significant improvements to developer productivity and code safety. The stabilized Copy Range types enable more efficient and cleaner code for slice operations, while the new assert matching macros provide better debugging capabilities. Most importantly, the WebAssembly linker behavior change helps developers catch undefined symbol errors earlier in the development cycle, reducing runtime failures in production WebAssembly applications.
Timeline & Sources
May 28, 2026
WireRust 1.96.0 released
May 28, 2026
WireNew Range types with Copy implementation stabilized
May 28, 2026
WireWebAssembly linker behavior change took effect