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 Traitargs. - Make
cenum_impl_drop_castwarnings deny-by-default. - Prevent unwinding when
-C panic=abortis used regardless of declared ABI. - lub: don’t bail out due to empty binders.
Compiler #
- Stabilize the
bundlenative library modifier, also removing the deprecatedstatic-nobundlelinking 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,PartialEqandEqforcore::fmt::Alignment. - Extend
ptr::nullandnull_mutto 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
Hashforcore::alloc::Layout. - Add capacity documentation for
OsString. - Put a bound on collection misbehavior.
- Make
std::mem::needs_dropaccept?Sized. impl Termination for Infallibleand then make theResultimpls ofTerminationmore generic.- Document Rust’s stance on
/proc/self/mem.
Stabilized APIs #
array::from_fnBox::into_pinBinaryHeap::try_reserveBinaryHeap::try_reserve_exactOsString::try_reserveOsString::try_reserve_exactPathBuf::try_reservePathBuf::try_reserve_exactPath::try_existsRef::filter_mapRefMut::filter_mapNonNull::<[T]>::lenToOwned::clone_intoIpv6Addr::to_ipv4_mappedunix::io::AsFdunix::io::BorrowedFd<'fd>unix::io::OwnedFdwindows::io::AsHandlewindows::io::BorrowedHandle<'handle>windows::io::OwnedHandlewindows::io::HandleOrInvalidwindows::io::HandleOrNullwindows::io::InvalidHandleErrorwindows::io::NullHandleErrorwindows::io::AsSocketwindows::io::BorrowedSocket<'handle>windows::io::OwnedSocketthread::scopethread::Scopethread::ScopedJoinHandle
These APIs are now usable in const contexts:
array::from_refslice::from_refintrinsics::copyintrinsics::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_nonoverlappingstr::from_utf8Utf8Error::error_lenUtf8Error::valid_up_toCondvar::newMutex::newRwLock::new
Cargo #
- Stabilize the
--config pathcommand-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.