Draft release notes for 1.87 #140133
Labels
relnotes-tracking-issue
Marks issues tracking what text to put in release notes.
T-release
Relevant to the release subteam, which will review and decide on the PR/issue.
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.87.0 (2025-05-15)
Language
feature(precise_capturing_in_traits)
allowinguse<...>
bounds on return positionimpl Trait
intrait
s📝
asm_goto
feature📝
Self: Sized
bounds inimpl
s for unsized types📝
📝
Compiler
📝
Platform Support
Refer to Rust's platform support page
for more information on Rust's tiered platform support.
Libraries
📝
📝
Debug
impl of raw pointers📝
Vec::with_capacity
guarantees it allocates with the amount requested, even ifVec::capacity
returns a different number.📝
std::arch
intrinsics which don't take pointer arguments can now be called from safe code if the caller has the appropriate target features already enabled (mark x86 intrinsics as safe stdarch#1714, mark arm intrinsics as safe stdarch#1716, mark riscv intrinsics as safe stdarch#1717)📝
env::home_dir
📝
ControlFlow
as#[must_use]
📝
assert_eq!
andvec!
now supportconst {...}
expressions📝
Stabilized APIs
Vec::extract_if
vec::ExtractIf
LinkedList::extract_if
linked_list::ExtractIf
📝
<[T]>::split_off
<[T]>::split_off_mut
<[T]>::split_off_first
<[T]>::split_off_first_mut
<[T]>::split_off_last
<[T]>::split_off_last_mut
📝
String::extend_from_within
📝
os_str::Display
OsString::display
OsStr::display
📝
io::pipe
io::PipeReader
io::PipeWriter
impl From<PipeReader> for OwnedHandle
impl From<PipeWriter> for OwnedHandle
impl From<PipeReader> for Stdio
impl From<PipeWriter> for Stdio
impl From<PipeReader> for OwnedFd
impl From<PipeWriter> for OwnedFd
📝
Box::write
📝
impl TryFrom<Vec<u8>> for String
📝
These APIs are now stable in const contexts:
<*const T>::offset_from_unsigned
<*const T>::byte_offset_from_unsigned
<*mut T>::offset_from_unsigned
<*mut T>::byte_offset_from_unsigned
NonNull::offset_from_unsigned
NonNull::byte_offset_from_unsigned
📝
<uN>::cast_signed
NonZero::<uN>::cast_signed
.<iN>::cast_signed
.NonZero::<iN>::cast_unsigned
.📝
<uN>::is_multiple_of
📝
<uN>::unbounded_shl
<uN>::unbounded_shr
<iN>::unbounded_shl
<iN>::unbounded_shr
📝
<str>::from_utf8
<str>::from_utf8_mut
<str>::from_utf8_unchecked
](https://doc.rust-lang.org/nightly/std/primitive.str.html#method.from_utf8_unchecked]<str>::from_utf8_unchecked_mut
📝
<[T]>::copy_from_slice
📝
SocketAddr::set_ip
SocketAddr::set_port
,SocketAddrV4::set_ip
SocketAddrV4::set_port
,SocketAddrV6::set_ip
SocketAddrV6::set_port
SocketAddrV6::set_flowinfo
SocketAddrV6::set_scope_id
📝
char::is_digit
char::is_whitespace
📝
<iN>:midpoint
📝
<[[T; N]]>::as_flattened
<[[T; N]]>::as_flattened_mut
📝
<str>::from_utf8_mut
core::str::from_utf8_mut
📝
String::into_bytes
String::as_str
#String::capacity
String::as_bytes
String::len
String::is_empty
String::as_mut_str
String::as_mut_vec
Vec::as_ptr
Vec::as_slice
Vec::capacity
Vec::len
Vec::is_empty
Vec::as_mut_slice
Vec::as_mut_ptr
📝
Cargo
Rustdoc
Compatibility Notes
#![crate_name]
attribute📝
📝
📝
Debug
impl of raw pointers print metadata if present📝
dyn
types are no longer deduplicated📝
..
inside of struct patterns (let Struct { #[attribute] .. }) =
📝
std::arch
intrinsics are now safe to call in some contexts, there may now be newunused_unsafe
warnings in existing codebases.📝
width
andprecision
formatting options to 16 bits on all targets📝
📝
ControlFlow
as#[must_use]
📝
📝
📝
📝
ptr_cast_add_auto_to_object
lint into hard error📝
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
The text was updated successfully, but these errors were encountered: