Update: This has now moved to a pull request -- #139002.
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.86.0 (2025-04-03)
Language
Compiler
Platform Support
Refer to Rust's platform support page
for more information on Rust's tiered platform support.
Libraries
Stabilized APIs
These APIs are now stable in const contexts:
Cargo
Rustdoc
Compatibility Notes
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
Update: This has now moved to a pull request -- #139002.
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.86.0 (2025-04-03)
Language
--x) as written in other languages. This was previously a clippy lint,clippy::double_neg, and is now available directly in Rust asdouble_negations.📝
missing_abilint now warns-by-default.📝
📝
repr()attribute applied to invalid items are now correctly rejected.📝
#[target_feature]attribute.📝
#![test]and#![rustfmt::skip]are no longer accepted in more places than intended.📝
📝
Compiler
📝
-Oto mean-C opt-level=3instead of-C opt-level=2to match Cargo's defaults.📝
overflowing_literalsunder certain macro environments.📝
Platform Support
{aarch64-unknown,x86_64-pc}-nto-qnx710_iosockfor supporting Neutrino QNX 7.1 withio-socketnetwork stack.{aarch64-unknown,x86_64-pc}-nto-qnx800for supporting Neutrino QNX 8.0no_stdonly.📝
{x86_64,i686}-win7-windows-gnu.These targets are intended for backwards compatibility with Windows 7.
{x86_64,i686}-win7-windows-msvcare the Windows MSVC counterparts that already exist as Tier 3 targets.📝
amdgcn-amd-amdhsa.📝
x86_64-pc-cygwin.📝
{mips,mipsel}-mti-none-elf(initial bare-metal support).📝
m68k-unknown-none-elf.📝
armv7a-nuttx-{eabi,eabihf},aarch64-unknown-nuttx, andthumbv7a-nuttx-{eabi,eabihf}.📝
i686-unknown-redoxtarget withi586-unknown-redox.📝
i686-unknown-hurd-gnuto Pentium 4.📝
Refer to Rust's platform support page
for more information on Rust's tiered platform support.
Libraries
FromBytesWithNulErrorinCStr::from_bytes_with_nul(bytes: &[u8]) -> Result<&Self, FromBytesWithNulError>was changed from an opaque struct to an enum, allowing users to examine why the conversion failed.📝
RustcDecodableandRustcEncodable.📝
--logfileoption.📝
std::fs::remove_filewill now remove read-only files.📝
Stabilized APIs
{float}::next_down{float}::next_up📝
HashMap::get_disjoint_mutHashMap::get_disjoint_unchecked_mut📝
NonZero::count_ones📝
Vec::pop_if📝
sync::Once::waitsync::Once::wait_forcesync::OnceLock::wait📝
<[_]>::get_disjoint_mut<[_]>::get_disjoint_unchecked_mutslice::GetDisjointMutError📝
These APIs are now stable in const contexts:
io::Cursor::get_mutio::Cursor::set_position📝
str::is_char_boundarystr::split_atstr::split_at_checkedstr::split_at_mutstr::split_at_mut_checked📝
hint::black_box📝
Cargo
Rustdoc
📝
Compatibility Notes
wasm_c_abifuture compatibility warning is now a hard error.Users of
wasm-bindgenshould upgrade to at least version 0.2.89, otherwise compilation will fail.📝
#![no_start]and#![crate_id].📝
cenum_impl_drop_casthas been made into a hard error. This means it is now an error to cast a field-less enum to an integer if the enum implementsDrop.📝
📝
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.
The ARM 64-bit compiler (AArch64) on Linux is now optimized with ThinLTO and PGO, similar to the optimizations we have already performed for the x86-64 compiler on Linux. This should make it up to 30% faster.
📝
Other