1.63.0 #
- Released on: 11 August, 2022
- Branched from master on: 24 June, 2022
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][platform-support-doc] 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.