Version 1.75.0 (2023-12-28)
Language
- Stabilize
async fn
and return-positionimpl Trait
in traits. - Allow function pointer signatures containing
&mut T
inconst
contexts. - Match
usize
/isize
exhaustively with half-open ranges. - Guarantee that
char
has the same size and alignment asu32
. - Document that the null pointer has the 0 address.
- Allow partially moved values in
match
. - Add notes about non-compliant FP behavior on 32bit x86 targets.
- Stabilize ratified RISC-V target features.
Compiler
- Rework negative coherence to properly consider impls that only partly overlap.
- Bump
COINDUCTIVE_OVERLAP_IN_COHERENCE
to deny, and warn in dependencies. - Consider alias bounds when computing liveness in NLL.
- Add the V (vector) extension to the
riscv64-linux-android
target spec. - Automatically enable cross-crate inlining for small functions
- Add several new tier 3 targets:
Refer to Rust's [platform support page][platform-support-doc] for more information on Rust's tiered platform support.
Libraries
- Override
Waker::clone_from
to avoid cloningWaker
s unnecessarily. - Implement
BufRead
forVecDeque<u8>
. - Implement
FusedIterator
forDecodeUtf16
when the inner iterator does. - Implement
Not, Bit{And,Or}{,Assign}
for IP addresses. - Implement
Default
forExitCode
. - Guarantee representation of None in NPO
- Document when atomic loads are guaranteed read-only.
- Broaden the consequences of recursive TLS initialization.
- Windows: Support sub-millisecond sleep.
- Fix generic bound of
str::SplitInclusive
'sDoubleEndedIterator
impl - Fix exit status / wait status on non-Unix
cfg(unix)
platforms.
Stabilized APIs
Atomic*::from_ptr
FileTimes
FileTimesExt
File::set_modified
File::set_times
IpAddr::to_canonical
Ipv6Addr::to_canonical
Option::as_slice
Option::as_mut_slice
pointer::byte_add
pointer::byte_offset
pointer::byte_offset_from
pointer::byte_sub
pointer::wrapping_byte_add
pointer::wrapping_byte_offset
pointer::wrapping_byte_sub
These APIs are now stable in const contexts:
Ipv6Addr::to_ipv4_mapped
MaybeUninit::assume_init_read
MaybeUninit::zeroed
mem::discriminant
mem::zeroed
Cargo
- Add new packages to
[workspace.members]
automatically. - Allow version-less
Cargo.toml
manifests. - Make browser links out of HTML file paths.
Rustdoc
- Accept less invalid Rust in rustdoc.
- Document lack of object safety on affected traits.
- Hide
#[repr(transparent)]
if it isn't part of the public ABI. - Show enum discriminant if it is a C-like variant.
Compatibility Notes
- FreeBSD targets now require at least version 12.
- Formally demote tier 2 MIPS targets to tier 3.
- Make misalignment a hard error in
const
contexts. - Fix detecting references to packed unsized fields.
- Remove support for compiler plugins.
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.