1.75.0 #
- Released on: 28 December, 2023
- Branched from master on: 10 November, 2023
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.