Version 1.75.0 (2023-12-28)
Language
- Stabilize
async fnand return-positionimpl Traitin traits. - Allow function pointer signatures containing
&mut Tinconstcontexts. - Match
usize/isizeexhaustively with half-open ranges. - Guarantee that
charhas 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_COHERENCEto deny, and warn in dependencies. - Consider alias bounds when computing liveness in NLL.
- Add the V (vector) extension to the
riscv64-linux-androidtarget 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_fromto avoid cloningWakers unnecessarily. - Implement
BufReadforVecDeque<u8>. - Implement
FusedIteratorforDecodeUtf16when the inner iterator does. - Implement
Not, Bit{And,Or}{,Assign}for IP addresses. - Implement
DefaultforExitCode. - 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'sDoubleEndedIteratorimpl - Fix exit status / wait status on non-Unix
cfg(unix)platforms.
Stabilized APIs
Atomic*::from_ptrFileTimesFileTimesExtFile::set_modifiedFile::set_timesIpAddr::to_canonicalIpv6Addr::to_canonicalOption::as_sliceOption::as_mut_slicepointer::byte_addpointer::byte_offsetpointer::byte_offset_frompointer::byte_subpointer::wrapping_byte_addpointer::wrapping_byte_offsetpointer::wrapping_byte_sub
These APIs are now stable in const contexts:
Ipv6Addr::to_ipv4_mappedMaybeUninit::assume_init_readMaybeUninit::zeroedmem::discriminantmem::zeroed
Cargo
- Add new packages to
[workspace.members]automatically. - Allow version-less
Cargo.tomlmanifests. - 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
constcontexts. - 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.