-
Notifications
You must be signed in to change notification settings - Fork 13.9k
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
Description
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
- Rust now lints about double negations, to catch cases that might have intended to be a prefix decrement operator (
--x) as written in other languages. This was previously a clippy lint,clippy::double_neg, and is now available directly in Rust asdouble_negations.
📝 - The
missing_abilint now warns-by-default.
📝 - More pointers are now detected as definitely not-null based on their alignment in const eval.
📝 - Empty
repr()attribute applied to invalid items are now correctly rejected.
📝 - Allow safe functions to be marked with the
#[target_feature]attribute.
📝 - Inner attributes
#![test]and#![rustfmt::skip]are no longer accepted in more places than intended.
📝 - Stabilize the ability to upcast a trait object to one of its supertraits.
📝
Compiler
- Debug-assert that raw pointers are non-null on access.
📝 - Change
-Oto mean-C opt-level=3instead of-C opt-level=2to match Cargo's defaults.
📝 - Fix emission of
overflowing_literalsunder certain macro environments.
📝
Platform Support
- Add new Tier 3 targets
{aarch64-unknown,x86_64-pc}-nto-qnx710_iosockfor supporting Neutrino QNX 7.1 withio-socketnetwork stack. - Add new Tier 3 targets
{aarch64-unknown,x86_64-pc}-nto-qnx800for supporting Neutrino QNX 8.0no_stdonly.
📝 - Add new Tier 3 targets
{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.
📝 - Add new Tier 3 target
amdgcn-amd-amdhsa.
📝 - Add new Tier 3 target
x86_64-pc-cygwin.
📝 - Add new Tier 3 targets
{mips,mipsel}-mti-none-elf(initial bare-metal support).
📝 - Add new Tier 3 target
m68k-unknown-none-elf.
📝 - Add new Tier 3 targets
armv7a-nuttx-{eabi,eabihf},aarch64-unknown-nuttx, andthumbv7a-nuttx-{eabi,eabihf}.
📝 - Replace
i686-unknown-redoxtarget withi586-unknown-redox.
📝 - Increase baseline CPU of
i686-unknown-hurd-gnuto Pentium 4.
📝
Refer to Rust's platform support page
for more information on Rust's tiered platform support.
Libraries
- The type of
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.
📝 - Remove
RustcDecodableandRustcEncodable.
📝 - Deprecate libtest's
--logfileoption.
📝 - On recent versions of Windows,
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
- The
wasm_c_abifuture compatibility warning is now a hard error.
Users ofwasm-bindgenshould upgrade to at least version 0.2.89, otherwise compilation will fail.
📝 - Remove long-deprecated no-op attributes
#![no_start]and#![crate_id].
📝 - The future incompatibility lint
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.
📝 - SSE2 is now required for "i686" 32-bit x86 hard-float targets; disabling it causes a warning that will become a hard error eventually.
📝
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.
- Build the rustc on AArch64 Linux with ThinLTO + PGO.
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
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.