Rust 1.73.0
Released on October 5, 2023
What's Changed
- Uplift
clippy::fn_null_checklint asuseless_ptr_null_checks. - Make
noop_method_callwarn by default. - Support interpolated block for
tryandasyncin macros. - Make
unconditional_recursionlint detect recursive drops. - Future compatibility warning for some impls being incorrectly considered not overlapping.
- The
invalid_reference_castinglint is now deny-by-default (instead of allow-by-default)
- Write version information in a
.commentsection 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:
aarch64-unknown-teeoscsky-unknown-linux-gnuabiv2riscv64-linux-androidriscv64gc-unknown-hermitx86_64-unikraft-linux-muslx86_64-unknown-linux-ohos- Add
wasm32-wasi-preview1-threadsas a tier 2 target.
- Add
Read,WriteandSeekimpls forArc. - Merge functionality of
io::Sinkintoio::Empty. - Implement
RefUnwindSafeforBacktrace - Make
ExitStatusimplementDefault impl SliceIndexfor (Bound , Bound ) - Change default panic handler message format.
- Cleaner
assert_eq!&assert_ne!panic messages. - Correct the (deprecated) Android
statstruct definitions. - Unsigned
{integer}::div_ceil - Unsigned
{integer}::next_multiple_of - Unsigned
{integer}::checked_next_multiple_of std::ffi::FromBytesUntilNulErrorstd::os::unix::fs::chownstd::os::unix::fs::fchownstd::os::unix::fs::lchownLocalKey::>::get | LocalKey::>::set | LocalKey::>::take | LocalKey::>::replace | LocalKey::>::with_borrow LocalKey::>::with_borrow_mut LocalKey::>::set LocalKey::>::take LocalKey::>::replace rc::Weak::newsync::Weak::newNonNull::as_ref
- Remove LLVM pointee types, supporting only opaque pointers.
- Port PGO/LTO/BOLT optimized build pipeline to Rust.
- Replace in-tree
rustc_apfloatwith the new version of the crate. - Update to LLVM 17.
- Add
internal_featureslint for internal unstable features. - Mention style for new syntax in tracking issue template.
Full Changelog
Language
--------
- Uplift clippy::fn_null_check lint as useless_ptr_null_checks.
- Make noop_method_call warn by default.
- Support interpolated block for try and async 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 and Seek impls for Arc.
- Merge functionality of io::Sink into io::Empty.
- Implement RefUnwindSafe for Backtrace
- Make ExitStatus implement Default
- impl SliceIndex
- 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
- LocalKey::
These APIs are now stable in const contexts:
Cargo
-----
- Bail out an error when using cargo:: in custom build script.
Misc
----
Compatibility Notes
-------------------
- Update the minimum external LLVM to 15.
- Check for non-defining uses of return position impl Trait.
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.
- Add internal_features lint for internal unstable features.