-
-
Notifications
You must be signed in to change notification settings - Fork 14.8k
Draft release notes for 1.88.0 #141598
Copy link
Copy link
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
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.
Type
Fields
Give feedbackNo fields configured for issues without a type.
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