-
Notifications
You must be signed in to change notification settings - Fork 13.5k
Open
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.89.0 (2025-08-07)
Language
- Lint on function pointers comparisons in external macros
📝 - Stabilize x86
keylocker
target feature
📝 - Partially stabilize LoongArch target features
📝 - Remove
i128
andu128
fromimproper_ctypes_definitions
📝 - Stabilize
repr128
📝 - Add a warn-by-default
mismatched_lifetime_syntaxes
lint.
This lint detects when the same lifetime is referred to by different syntax categories between function arguments and return values, which can be confusing to read, especially in unsafe code.
This lint supersedes the warn-by-defaultelided_named_lifetimes
lint.
📝 - Stabilize the avx512 target features
📝 - Allow
#![doc(test(attr(..)))]
everywhere
📝 - Extend temporary lifetime extension to also go through tuple struct and tuple variant constructors
📝 - Stabilize
kl
andwidekl
target features for x86
📝 - Stabilize
sha512
,sm3
andsm4
target features for x86
📝 - Stabilize
feature(generic_arg_infer)
📝 - Make the
dangerous_implicit_autorefs
lint deny-by-default
📝
Compiler
- aarch64-linux: Default to FramePointer::NonLeaf
📝 - Enable non-leaf Frame Pointers for Arm64EC Windows
📝 - compiler: set Apple frame pointers by architecture
📝
Platform Support
Refer to Rust's platform support page
for more information on Rust's tiered platform support.
Libraries
- Specify the base path for
file!
📝 - Implement
std::io::Seek
forstd::io::Take
📝 - add
CStr::display
- Allow storing
format_args!()
in variable
📝 - Add
#[must_use]
to[T; N]::map
.
📝
Stabilized APIs
- AVX512 intrinsics
📝 - Stabilize x86
SHA512
,SM3
andSM4
intrinsics
📝 - Stabilize
std::os::linux::net::TcpStreamExt::{set_}quickack
📝 - Implement
DerefMut
forLazy[Cell/Lock]
📝 - Stabilize
core::ptr::NonNull::{from_ref,from_mut}
📝 - Stabilize
{str,[u8]}::eq_ignore_ascii_case
📝 - Stabilize x86
keylocker
intrinsics (kl
,widekl
)
📝 NonNull::without_provenance
NonNull::from_exposed_provenance
NonNull::expose_provenance
📝- Stabilize
{OsString,PathBuf}::leak
📝 - Added
Clone
implementation forChunkBy
📝 - Allow
NonZero<char>
📝 - Stabilize
Result::flatten
📝 - impl
Default
forarray::IntoIter
📝
These previously stable APIs are now stable in const contexts:
NonNull::without_provenance
📝- Stabilize
<[T; N]>::as_mut_slice
asconst
📝
Cargo
- fix: default to all targets when using
--edition
and--edition-idioms
in cargo fix - Stabilize doctest-xcompile
Rustdoc
- On mobile, make the sidebar full width and linewrap. This makes long section and item names much easier to deal with on mobile.
📝
Compatibility Notes
- Optimize
Seek::stream_len
impl forFile
📝 - Make
missing_fragment_specifier
an unconditional error
📝 - Enabling the
neon
target feature onaarch64-unknown-none-softfloat
causes a warning because mixing code with and without that target feature is not properly supported by LLVM
📝 - Sized Hierarchy: Part I
- Introduces a small breaking change affecting
?Sized
bounds on impls on recursive types which contain associated type projections. It is not expected to affect any existing published crates. Can be fixed by refactoring the involved types or opting into thesized_hierarchy
unstable feature. See the FCP report for a code example.
📝
- Introduces a small breaking change affecting
- The warn-by-default
elided_named_lifetimes
lint is superseded by the warn-by-defaultmismatched_lifetime_syntaxes
lint.
📝 - Error on recursive opaque types earlier in the type checker
📝 - Type inference side effects from requiring element types of array repeat expressions are
Copy
are now only available at the end of type checking
📝 - The deprecated accidentally-stable
std::intrinsics::{copy,copy_nonoverlapping,write_bytes}
are now proper intrinsics.. There are no debug assertions guarding against UB, and they cannot be coerced to function pointers.
📝 - Remove long-deprecated
std::intrinsics::drop_in_place
📝 - Make well-formedness predicates no longer coinductive
📝 - Remove hack when checking impl method compatibility
📝 - remove unnecessary type inference due to builtin trait object impls
📝 - Lint against "stdcall", "fastcall", and "cdecl" on non-x86-32 targets
📝 - Future incompatibility warnings relating to the never type (
!
) are now reported in dependencies
📝 - Ensure copy* intrinsics also perform the static self-init checks
📝
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.