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