1.75.0
版本发布时间: 2023-12-29 00:21:59
rust-lang/rust最新发布版本:1.77.2(2024-04-10 06:00:34)
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 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.