Language
- Split up the
unknown_or_malformed_diagnostic_attributes
lint. This lint has been split up into four finer-grained lints, withunknown_or_malformed_diagnostic_attributes
now being the lint group that contains these lints:unknown_diagnostic_attributes
: unknown to the current compilermisplaced_diagnostic_attributes
: placed on the wrong itemmalformed_diagnostic_attributes
: malformed attribute syntax or optionsmalformed_diagnostic_format_literals
: malformed format string literal
- Allow constants whose final value has references to mutable/external memory, but reject such constants as patterns
- Allow volatile access to non-Rust memory, including address 0
Compiler
- Use
lld
by default onx86_64-unknown-linux-gnu
. - Tier 3
musl
targets now link dynamically by default. Affected targets:mips64-unknown-linux-muslabi64
powerpc64-unknown-linux-musl
powerpc-unknown-linux-musl
powerpc-unknown-linux-muslspe
riscv32gc-unknown-linux-musl
s390x-unknown-linux-musl
thumbv7neon-unknown-linux-musleabihf
Platform Support
Refer to Rust's platform support page for more information on Rust's tiered platform support.
Libraries
- Stabilize
u*::{checked,overflowing,saturating,wrapping}_sub_signed
- Allow comparisons between
CStr
,CString
, andCow<CStr>
- Remove some unsized tuple impls since unsized tuples can't be constructed
- Set
MSG_NOSIGNAL
forUnixStream
proc_macro::Ident::new
now supports$crate
.- Guarantee the pointer returned from
Thread::into_raw
has at least 8 bytes of alignment
Stabilized APIs
u{n}::checked_sub_signed
u{n}::overflowing_sub_signed
u{n}::saturating_sub_signed
u{n}::wrapping_sub_signed
impl Copy for IntErrorKind
impl Hash for IntErrorKind
impl PartialEq<&CStr> for CStr
impl PartialEq<CString> for CStr
impl PartialEq<Cow<CStr>> for CStr
impl PartialEq<&CStr> for CString
impl PartialEq<CStr> for CString
impl PartialEq<Cow<CStr>> for CString
impl PartialEq<&CStr> for Cow<CStr>
impl PartialEq<CStr> for Cow<CStr>
impl PartialEq<CString> for Cow<CStr>
These previously stable APIs are now stable in const contexts:
<[T]>::reverse
f32::floor
f32::ceil
f32::trunc
f32::fract
f32::round
f32::round_ties_even
f64::floor
f64::ceil
f64::trunc
f64::fract
f64::round
f64::round_ties_even
Cargo
- Add
http.proxy-cainfo
config for proxy certs - Use
gix
forcargo package
- feat(publish): Stabilize multi-package publishing
Rustdoc
- Add ways to collapse all impl blocks. Previously the "Summary" button and "-" keyboard shortcut would never collapse
impl
blocks, now they do when shift is held - Display unsafe attributes with
unsafe()
wrappers
Compatibility Notes
- Use
lld
by default onx86_64-unknown-linux-gnu
. See also https://blog.rust-lang.org/2025/09/01/rust-lld-on-1.90.0-stable/. - Make
core::iter::Fuse
'sDefault
impl constructI::default()
internally as promised in the docs instead of always being empty - Set
MSG_NOSIGNAL
forUnixStream
This may change program behavior but results in the same behavior as other primitives (e.g., stdout, network sockets). Programs relying on signals to terminate them should update handling of sockets to handle errors on write by exiting. - On Unix
std::env::home_dir
will use the fallback if theHOME
environment variable is empty - We now reject unsupported
extern "{abi}"
s consistently in all positions. This primarily affects the use of implementing traits on anextern "{abi}"
function pointer, likeextern "stdcall" fn()
, on a platform that doesn't support that, like aarch64-unknown-linux-gnu. Direct usage of these unsupported ABI strings by declaring or defining functions was already rejected, so this is only a change for consistency. - const-eval: error when initializing a static writes to that static
- Check that the
proc_macro_derive
macro has correct arguments when applied to the crate root