-
-
Notifications
You must be signed in to change notification settings - Fork 14.8k
Draft release notes for 1.87 #140133
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.
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.87.0 (2025-05-15)
Language
asm_gotofeature📝
📝
Self: Sizedbounds inimpls for unsized types📝
feature(precise_capturing_in_traits)allowinguse<...>bounds on return positionimpl Traitintraits📝
Compiler
📝
Platform Support
Refer to Rust's platform support page
for more information on Rust's tiered platform support.
Libraries
📝
📝
Debugimpl of raw pointers📝
Vec::with_capacityguarantees it allocates with the amount requested, even ifVec::capacityreturns a different number.📝
std::archintrinsics 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📝
ControlFlowas#[must_use]📝
assert_eq!andvec!now supportconst {...}expressions📝
Stabilized APIs
Vec::extract_ifvec::ExtractIfLinkedList::extract_iflinked_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::DisplayOsString::displayOsStr::display📝
io::pipeio::PipeReaderio::PipeWriterimpl From<PipeReader> for OwnedHandleimpl From<PipeWriter> for OwnedHandleimpl From<PipeReader> for Stdioimpl From<PipeWriter> for Stdioimpl From<PipeReader> for OwnedFdimpl From<PipeWriter> for OwnedFd📝
Box<MaybeUninit<T>>::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_unsignedNonNull::offset_from_unsignedNonNull::byte_offset_from_unsigned📝
<uN>::cast_signedNonZero::<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<str>::from_utf8_unchecked_mut📝
<[T]>::copy_from_slice📝
SocketAddr::set_ipSocketAddr::set_port,SocketAddrV4::set_ipSocketAddrV4::set_port,SocketAddrV6::set_ipSocketAddrV6::set_portSocketAddrV6::set_flowinfoSocketAddrV6::set_scope_id📝
char::is_digitchar::is_whitespace📝
<iN>:midpoint📝
<[[T; N]]>::as_flattened<[[T; N]]>::as_flattened_mut📝
<str>::from_utf8_mutcore::str::from_utf8_mut📝
String::into_bytesString::as_strString::capacityString::as_bytesString::lenString::is_emptyString::as_mut_strString::as_mut_vecVec::as_ptrVec::as_sliceVec::capacityVec::lenVec::is_emptyVec::as_mut_sliceVec::as_mut_ptr📝
Cargo
Rustdoc
Compatibility Notes
#![crate_name]attribute📝
📝
📝
Debugimpl of raw pointers print metadata if present📝
📝
dyntypes are no longer deduplicated📝
..inside of struct patterns (let Struct { #[attribute] .. }) =📝
ptr_cast_add_auto_to_objectlint into hard error📝
std::archintrinsics are now safe to call in some contexts, there may now be newunused_unsafewarnings in existing codebases.📝
widthandprecisionformatting options to 16 bits on all targets📝
📝
ControlFlowas#[must_use]📝
📝
📝
NonterminalandTokenKind::Interpolated📝
cfgattributes📝
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