1.73.0 #
- Released on: 5 October, 2023
- Branched from master on: 18 August, 2023
Language #
- Uplift
clippy::fn_null_check
lint asuseless_ptr_null_checks
. - Make
noop_method_call
warn by default. - Support interpolated block for
try
andasync
in macros. - Make
unconditional_recursion
lint detect recursive drops. - Future compatibility warning for some impls being incorrectly considered not overlapping.
- The
invalid_reference_casting
lint is now deny-by-default (instead of allow-by-default)
Compiler #
- Write version information in a
.comment
section like GCC/Clang. - Add documentation on v0 symbol mangling.
- Stabilize
extern "thiscall"
and"thiscall-unwind"
ABIs. - Only check outlives goals on impl compared to trait.
- Infer type in irrefutable slice patterns with fixed length as array.
- Discard default auto trait impls if explicit ones exist.
- Add several new tier 3 targets:
- Add
wasm32-wasi-preview1-threads
as a tier 2 target.
Refer to Rust’s [platform support page][platform-support-doc] for more information on Rust’s tiered platform support.
Libraries #
- Add
Read
,Write
andSeek
impls forArc<File>
. - Merge functionality of
io::Sink
intoio::Empty
. - Implement
RefUnwindSafe
forBacktrace
- Make
ExitStatus
implementDefault
impl SliceIndex<str> for (Bound<usize>, Bound<usize>)
- Change default panic handler message format.
- Cleaner
assert_eq!
&assert_ne!
panic messages. - Correct the (deprecated) Android
stat
struct definitions.
Stabilized APIs #
- Unsigned
{integer}::div_ceil
- Unsigned
{integer}::next_multiple_of
- Unsigned
{integer}::checked_next_multiple_of
std::ffi::FromBytesUntilNulError
std::os::unix::fs::chown
std::os::unix::fs::fchown
std::os::unix::fs::lchown
LocalKey::<Cell<T>>::get
LocalKey::<Cell<T>>::set
LocalKey::<Cell<T>>::take
LocalKey::<Cell<T>>::replace
LocalKey::<RefCell<T>>::with_borrow
LocalKey::<RefCell<T>>::with_borrow_mut
LocalKey::<RefCell<T>>::set
LocalKey::<RefCell<T>>::take
LocalKey::<RefCell<T>>::replace
These APIs are now stable in const contexts:
Cargo #
Misc #
Compatibility Notes #
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.
- Remove LLVM pointee types, supporting only opaque pointers.
- Port PGO/LTO/BOLT optimized build pipeline to Rust.
- Replace in-tree
rustc_apfloat
with the new version of the crate. - Update to LLVM 17.
- Add
internal_features
lint for internal unstable features. - Mention style for new syntax in tracking issue template.