NOTE: We are trying this issue as a new way to work on the draft release notes.
Use the 📝 links to edit those that have a relnotes-tracking-issue,
and they will be updated when we regenerate the notes periodically.
cc @rust-lang/release
Version 1.88.0 (2025-06-26)
Language
Compiler
Platform Support
Refer to Rust's platform support page
for more information on Rust's tiered platform support.
Libraries
Stabilized APIs
These previously stable APIs are now stable in const contexts:
Cargo
Rustdoc
Compatibility Notes
Internal Changes
These changes do not affect any public interfaces of Rust, but they represent
significant improvements to the performance or internals of rustc and related
tools.
Other
NOTE: We are trying this issue as a new way to work on the draft release notes.
Use the 📝 links to edit those that have a
relnotes-tracking-issue,and they will be updated when we regenerate the notes periodically.
cc @rust-lang/release
Version 1.88.0 (2025-06-26)
Language
invalid_null_argumentslint to prevent invalid usage of null pointers.This lint is uplifted from
clippy::invalid_null_ptr_usage.📝
dangerous_implicit_autorefslint against implicit autoref of raw pointer dereference.The lint may be bumped to deny-by-default in a future version of Rust.
📝
#![feature(let_chains)]in the 2024 edition.This feature allows
&&-chainingletstatements insideifandwhile, allowing intermixture with boolean expressions. The patterns inside theletsub-expressions can be irrefutable or refutable.📝
#![feature(naked_functions)].Naked functions allow writing functions with no compiler-generated epilogue and prologue, allowing full control over the generated assembly for a particular function.
📝
#[bench]attribute. Usage of#[bench]without#![feature(custom_test_frameworks)]already triggered a deny-by-default future-incompatibility lint since Rust 1.77, but will now become a hard error.📝
📝
#![feature(cfg_boolean_literals)].This allows using boolean literals as
cfgpredicates, e.g.#[cfg(true)]and#[cfg(false)].📝
📝
Compiler
-Cdwarf-versionfor selecting the version of DWARF debug information to generate.📝
Platform Support
i686-pc-windows-gnuto Tier 2.📝
Refer to Rust's platform support page
for more information on Rust's tiered platform support.
Libraries
#[should_panic]test failure message.📝
[T; N]::from_fnis generated in order of increasing indices., for those passing it a stateful closure.📝
--nocaptureis deprecated in favor of the more consistent--no-captureflag.📝
{float}::NANis a quiet NaN.📝
Stabilized APIs
Cell::update📝
impl Default for *const Timpl Default for *mut T📝
HashMap::extract_ifHashSet::extract_if📝
proc_macro::Span::lineproc_macro::Span::columnproc_macro::Span::startproc_macro::Span::end📝
proc_macro::Span::fileproc_macro::Span::local_file📝
These previously stable APIs are now stable in const contexts:
NonNull<T>::replace<*mut T>::replace📝
std::ptr::swap_nonoverlapping📝
Cell::{replace, get, get_mut, from_mut, as_slice_of_cells}📝
Cargo
zlib-rsfor gzip compression in rust codeRustdoc
ignore-*attributes.--test-runtooland--test-runtool-argCLI options to specify a program (like qemu) and its arguments to run a doctest.📝
Compatibility Notes
ttfragment specifier can often fix these macros.📝
#[bench]attribute. Usage of#[bench]without#![feature(custom_test_frameworks)]already triggered a deny-by-default future-incompatibility lint since Rust 1.77, but will now become a hard error.📝
The borrow checker was overly permissive in some cases, allowing programs that shouldn't have compiled.
📝
📝
📝
Internal Changes
These changes do not affect any public interfaces of Rust, but they represent
significant improvements to the performance or internals of rustc and related
tools.
Other