-
Notifications
You must be signed in to change notification settings - Fork 14k
Closed
Labels
T-releaseRelevant to the release subteam, which will review and decide on the PR/issue.Relevant to the release subteam, which will review and decide on the PR/issue.relnotes-tracking-issueMarks issues tracking what text to put in release notes.Marks issues tracking what text to put in release notes.
Milestone
Description
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
- Add
invalid_null_argumentslint to prevent invalid usage of null pointers.
This lint is uplifted fromclippy::invalid_null_ptr_usage.
📝 - Add warn-by-default
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.
📝 - Stabilize
#![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.
📝 - Stabilize
#![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.
📝 - Fully de-stabilize the
#[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.
📝 - Change trait impl candidate preference for builtin impls and trivial where-clauses.
📝 - Stabilize
#![feature(cfg_boolean_literals)].
This allows using boolean literals ascfgpredicates, e.g.#[cfg(true)]and#[cfg(false)].
📝 - Check types of generic const parameter defaults
📝
Compiler
Platform Support
Refer to Rust's platform support page
for more information on Rust's tiered platform support.
Libraries
- Remove backticks from
#[should_panic]test failure message.
📝 - Guarantee that
[T; N]::from_fnis generated in order of increasing indices., for those passing it a stateful closure.
📝 - The libtest flag
--nocaptureis deprecated in favor of the more consistent--no-captureflag.
📝 - Guarantee that
{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
Rustdoc
- Doctests can be ignored based on target names using
ignore-*attributes. - Stabilize the
--test-runtooland--test-runtool-argCLI options to specify a program (like qemu) and its arguments to run a doctest.
📝
Compatibility Notes
- Finish changing the internal representation of pasted tokens. Certain invalid declarative macros that were previously accepted in obscure circumstances are now correctly rejected by the compiler. Use of a
ttfragment specifier can often fix these macros.
📝 - Fully de-stabilize the
#[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.
📝 - Fix borrow checking some always-true patterns.
The borrow checker was overly permissive in some cases, allowing programs that shouldn't have compiled.
📝 - Update the minimum external LLVM to 19.
📝 - Make it a hard error to use a vector type with a non-Rust ABI without enabling the required target feature.
📝
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
Metadata
Metadata
Assignees
Labels
T-releaseRelevant to the release subteam, which will review and decide on the PR/issue.Relevant to the release subteam, which will review and decide on the PR/issue.relnotes-tracking-issueMarks issues tracking what text to put in release notes.Marks issues tracking what text to put in release notes.