Rust 1.63.0
Language
- Remove migrate borrowck mode for pre-NLL errors.
- Modify MIR building to drop repeat expressions with length zero.
- Remove label/lifetime shadowing warnings.
- Allow explicit generic arguments in the presence of
impl Trait
args. - Make
cenum_impl_drop_cast
warnings deny-by-default. - Prevent unwinding when
-C panic=abort
is used regardless of declared ABI. - lub: don't bail out due to empty binders.
Compiler
- Stabilize the
bundle
native library modifier, also removing the deprecatedstatic-nobundle
linking kind. - Add Apple WatchOS compile targets*.
- Add a Windows application manifest to rustc-main.
* Refer to Rust's platform support page for more information on Rust's tiered platform support.
Libraries
- Implement
Copy
,Clone
,PartialEq
andEq
forcore::fmt::Alignment
. - Extend
ptr::null
andnull_mut
to all thin (including extern) types. impl Read and Write for VecDeque<u8>
.- STD support for the Nintendo 3DS.
- Use rounding in float to Duration conversion methods.
- Make write/print macros eagerly drop temporaries.
- Implement internal traits that enable
[OsStr]::join
. - Implement
Hash
forcore::alloc::Layout
. - Add capacity documentation for
OsString
. - Put a bound on collection misbehavior.
- Make
std::mem::needs_drop
accept?Sized
. impl Termination for Infallible
and then make theResult
impls ofTermination
more generic.- Document Rust's stance on
/proc/self/mem
.
Stabilized APIs
array::from_fn
Box::into_pin
BinaryHeap::try_reserve
BinaryHeap::try_reserve_exact
OsString::try_reserve
OsString::try_reserve_exact
PathBuf::try_reserve
PathBuf::try_reserve_exact
Path::try_exists
Ref::filter_map
RefMut::filter_map
NonNull::<[T]>::len
ToOwned::clone_into
Ipv6Addr::to_ipv4_mapped
unix::io::AsFd
unix::io::BorrowedFd<'fd>
unix::io::OwnedFd
windows::io::AsHandle
windows::io::BorrowedHandle<'handle>
windows::io::OwnedHandle
windows::io::HandleOrInvalid
windows::io::HandleOrNull
windows::io::InvalidHandleError
windows::io::NullHandleError
windows::io::AsSocket
windows::io::BorrowedSocket<'handle>
windows::io::OwnedSocket
thread::scope
thread::Scope
thread::ScopedJoinHandle
These APIs are now usable in const contexts:
array::from_ref
slice::from_ref
intrinsics::copy
intrinsics::copy_nonoverlapping
<*const T>::copy_to
<*const T>::copy_to_nonoverlapping
<*mut T>::copy_to
<*mut T>::copy_to_nonoverlapping
<*mut T>::copy_from
<*mut T>::copy_from_nonoverlapping
str::from_utf8
Utf8Error::error_len
Utf8Error::valid_up_to
Condvar::new
Mutex::new
RwLock::new
Cargo
- Stabilize the
--config path
command-line argument. - Expose rust-version in the environment as
CARGO_PKG_RUST_VERSION
.
Compatibility Notes
#[link]
attributes are now checked more strictly, which may introduce errors for invalid attribute arguments that were previously ignored.- Rounding is now used when converting a float to a
Duration
. The converted duration can differ slightly from what it was.
Internal Changes
These changes provide no direct user facing benefits, but represent significant improvements to the internals and overall performance of rustc and related tools.