rust-cli / env_logger

A logging implementation for `log` which is configured via an environment variable.
https://docs.rs/env_logger
Apache License 2.0
782 stars 124 forks source link

chore(deps): update msrv to v1.66.0 #277

Closed renovate[bot] closed 10 months ago

renovate[bot] commented 10 months ago

Mend Renovate

This PR contains the following updates:

Package Update Change Pending
rust minor 1.60.0 -> 1.66.0 1.72.0 (+9)

Release Notes

rust-lang/rust (rust) ### [`v1.66.0`](https://togithub.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1660-2022-12-15) [Compare Source](https://togithub.com/rust-lang/rust/compare/1.65.0...1.66.0) \========================== ## Language - [Permit specifying explicit discriminants on all `repr(Int)` enums](https://togithub.com/rust-lang/rust/pull/95710/) ```rust #[repr(u8)] enum Foo { A(u8) = 0, B(i8) = 1, C(bool) = 42, } ``` - [Allow transmutes between the same type differing only in lifetimes](https://togithub.com/rust-lang/rust/pull/101520/) - [Change constant evaluation errors from a deny-by-default lint to a hard error](https://togithub.com/rust-lang/rust/pull/102091/) - [Trigger `must_use` on `impl Trait` for supertraits](https://togithub.com/rust-lang/rust/pull/102287/) This makes `impl ExactSizeIterator` respect the existing `#[must_use]` annotation on `Iterator`. - [Allow `..=X` in patterns](https://togithub.com/rust-lang/rust/pull/102275/) - [Uplift `clippy::for_loops_over_fallibles` lint into rustc](https://togithub.com/rust-lang/rust/pull/99696/) - [Stabilize `sym` operands in inline assembly](https://togithub.com/rust-lang/rust/pull/103168/) - [Update to Unicode 15](https://togithub.com/rust-lang/rust/pull/101912/) - [Opaque types no longer imply lifetime bounds](https://togithub.com/rust-lang/rust/pull/95474/) This is a soundness fix which may break code that was erroneously relying on this behavior. ## Compiler - [Add armv5te-none-eabi and thumbv5te-none-eabi tier 3 targets](https://togithub.com/rust-lang/rust/pull/101329/) - Refer to Rust's \[platform support page]\[platform-support-doc] for more information on Rust's tiered platform support. - [Add support for linking against macOS universal libraries](https://togithub.com/rust-lang/rust/pull/98736) ## Libraries - [Fix `#[derive(Default)]` on a generic `#[default]` enum adding unnecessary `Default` bounds](https://togithub.com/rust-lang/rust/pull/101040/) - [Update to Unicode 15](https://togithub.com/rust-lang/rust/pull/101821/) ## Stabilized APIs - [`proc_macro::Span::source_text`](https://doc.rust-lang.org/stable/proc_macro/struct.Span.html#method.source_text) - [`uX::{checked_add_signed, overflowing_add_signed, saturating_add_signed, wrapping_add_signed}`](https://doc.rust-lang.org/stable/std/primitive.u8.html#method.checked_add_signed) - [`iX::{checked_add_unsigned, overflowing_add_unsigned, saturating_add_unsigned, wrapping_add_unsigned}`](https://doc.rust-lang.org/stable/std/primitive.i8.html#method.checked_add_unsigned) - [`iX::{checked_sub_unsigned, overflowing_sub_unsigned, saturating_sub_unsigned, wrapping_sub_unsigned}`](https://doc.rust-lang.org/stable/std/primitive.i8.html#method.checked_sub_unsigned) - [`BTreeSet::{first, last, pop_first, pop_last}`](https://doc.rust-lang.org/stable/std/collections/struct.BTreeSet.html#method.first) - [`BTreeMap::{first_key_value, last_key_value, first_entry, last_entry, pop_first, pop_last}`](https://doc.rust-lang.org/stable/std/collections/struct.BTreeMap.html#method.first_key_value) - [Add `AsFd` implementations for stdio lock types on WASI.](https://togithub.com/rust-lang/rust/pull/101768/) - [`impl TryFrom> for Box<[T; N]>`](https://doc.rust-lang.org/stable/std/boxed/struct.Box.html#impl-TryFrom%3CVec%3CT%2C%20Global%3E%3E-for-Box%3C%5BT%3B%20N%5D%2C%20Global%3E) - [`core::hint::black_box`](https://doc.rust-lang.org/stable/std/hint/fn.black_box.html) - [`Duration::try_from_secs_{f32,f64}`](https://doc.rust-lang.org/stable/std/time/struct.Duration.html#method.try_from_secs_f32) - [`Option::unzip`](https://doc.rust-lang.org/stable/std/option/enum.Option.html#method.unzip) - [`std::os::fd`](https://doc.rust-lang.org/stable/std/os/fd/index.html) ## Rustdoc - [Add Rustdoc warning for invalid HTML tags in the documentation](https://togithub.com/rust-lang/rust/pull/101720/) ## Cargo - [Added `cargo remove` to remove dependencies from Cargo.toml](https://doc.rust-lang.org/nightly/cargo/commands/cargo-remove.html) - [`cargo publish` now waits for the new version to be downloadable before exiting](https://togithub.com/rust-lang/cargo/pull/11062) See [detailed release notes](https://togithub.com/rust-lang/cargo/blob/master/CHANGELOG.md#cargo-166-2022-12-15) for more. ## Compatibility Notes - [Only apply `ProceduralMasquerade` hack to older versions of `rental`](https://togithub.com/rust-lang/rust/pull/94063/) - [Don't export `__heap_base` and `__data_end` on wasm32-wasi.](https://togithub.com/rust-lang/rust/pull/102385/) - [Don't export `__wasm_init_memory` on WebAssembly.](https://togithub.com/rust-lang/rust/pull/102426/) - [Only export `__tls_*` on wasm32-unknown-unknown.](https://togithub.com/rust-lang/rust/pull/102440/) - [Don't link to `libresolv` in libstd on Darwin](https://togithub.com/rust-lang/rust/pull/102766/) - [Update libstd's libc to 0.2.135 (to make `libstd` no longer pull in `libiconv.dylib` on Darwin)](https://togithub.com/rust-lang/rust/pull/103277/) - [Opaque types no longer imply lifetime bounds](https://togithub.com/rust-lang/rust/pull/95474/) This is a soundness fix which may break code that was erroneously relying on this behavior. - [Make `order_dependent_trait_objects` show up in future-breakage reports](https://togithub.com/rust-lang/rust/pull/102635/) - [Change std::process::Command spawning to default to inheriting the parent's signal mask](https://togithub.com/rust-lang/rust/pull/101077/) ## 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. - [Enable BOLT for LLVM compilation](https://togithub.com/rust-lang/rust/pull/94381/) - [Enable LTO for rustc_driver.so](https://togithub.com/rust-lang/rust/pull/101403/) ### [`v1.65.0`](https://togithub.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1650-2022-11-03) [Compare Source](https://togithub.com/rust-lang/rust/compare/1.64.0...1.65.0) \========================== ## Language - [Error on `as` casts of enums with `#[non_exhaustive]` variants](https://togithub.com/rust-lang/rust/pull/92744/) - [Stabilize `let else`](https://togithub.com/rust-lang/rust/pull/93628/) - [Stabilize generic associated types (GATs)](https://togithub.com/rust-lang/rust/pull/96709/) - [Add lints `let_underscore_drop` and `let_underscore_lock` from Clippy](https://togithub.com/rust-lang/rust/pull/97739/) - [Stabilize `break`ing from arbitrary labeled blocks ("label-break-value")](https://togithub.com/rust-lang/rust/pull/99332/) - [Uninitialized integers, floats, and raw pointers are now considered immediate UB](https://togithub.com/rust-lang/rust/pull/98919/). Usage of `MaybeUninit` is the correct way to work with uninitialized memory. - [Stabilize raw-dylib for Windows x86\_64, aarch64, and thumbv7a](https://togithub.com/rust-lang/rust/pull/99916/) - [Do not allow `Drop` impl on foreign ADTs](https://togithub.com/rust-lang/rust/pull/99576/) ## Compiler - [Stabilize -Csplit-debuginfo on Linux](https://togithub.com/rust-lang/rust/pull/98051/) - [Use niche-filling optimization even when multiple variants have data](https://togithub.com/rust-lang/rust/pull/94075/) - [Associated type projections are now verified to be well-formed prior to resolving the underlying type](https://togithub.com/rust-lang/rust/pull/99217/#issuecomment-1209365630) - [Stringify non-shorthand visibility correctly](https://togithub.com/rust-lang/rust/pull/100350/) - [Normalize struct field types when unsizing](https://togithub.com/rust-lang/rust/pull/101831/) - [Update to LLVM 15](https://togithub.com/rust-lang/rust/pull/99464/) - [Fix aarch64 call abi to correctly zeroext when needed](https://togithub.com/rust-lang/rust/pull/97800/) - [debuginfo: Generalize C++-like encoding for enums](https://togithub.com/rust-lang/rust/pull/98393/) - [Add `special_module_name` lint](https://togithub.com/rust-lang/rust/pull/94467/) - [Add support for generating unique profraw files by default when using `-C instrument-coverage`](https://togithub.com/rust-lang/rust/pull/100384/) - [Allow dynamic linking for iOS/tvOS targets](https://togithub.com/rust-lang/rust/pull/100636/) New targets: - [Add armv4t-none-eabi as a tier 3 target](https://togithub.com/rust-lang/rust/pull/100244/) - [Add powerpc64-unknown-openbsd and riscv64-unknown-openbsd as tier 3 targets](https://togithub.com/rust-lang/rust/pull/101025/) - Refer to Rust's \[platform support page]\[platform-support-doc] for more information on Rust's tiered platform support. ## Libraries - [Don't generate `PartialEq::ne` in derive(PartialEq)](https://togithub.com/rust-lang/rust/pull/98655/) - [Windows RNG: Use `BCRYPT_RNG_ALG_HANDLE` by default](https://togithub.com/rust-lang/rust/pull/101325/) - [Forbid mixing `System` with direct system allocator calls](https://togithub.com/rust-lang/rust/pull/101394/) - [Document no support for writing to non-blocking stdio/stderr](https://togithub.com/rust-lang/rust/pull/101416/) - [`std::layout::Layout` size must not overflow `isize::MAX` when rounded up to `align`](https://togithub.com/rust-lang/rust/pull/95295) This also changes the safety conditions on `Layout::from_size_align_unchecked`. ## Stabilized APIs - [`std::backtrace::Backtrace`](https://doc.rust-lang.org/stable/std/backtrace/struct.Backtrace.html) - [`Bound::as_ref`](https://doc.rust-lang.org/stable/std/ops/enum.Bound.html#method.as_ref) - [`std::io::read_to_string`](https://doc.rust-lang.org/stable/std/io/fn.read_to_string.html) - [`<*const T>::cast_mut`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.cast_mut) - [`<*mut T>::cast_const`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.cast_const) These APIs are now stable in const contexts: - [`<*const T>::offset_from`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.offset_from) - [`<*mut T>::offset_from`](https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.offset_from) ## Cargo - [Apply GitHub fast path even for partial hashes](https://togithub.com/rust-lang/cargo/pull/10807/) - [Do not add home bin path to PATH if it's already there](https://togithub.com/rust-lang/cargo/pull/11023/) - [Take priority into account within the pending queue](https://togithub.com/rust-lang/cargo/pull/11032/). This slightly optimizes job scheduling by Cargo, with typically small improvements on larger crate graph builds. ## Compatibility Notes - [`std::layout::Layout` size must not overflow `isize::MAX` when rounded up to `align`](https://togithub.com/rust-lang/rust/pull/95295). This also changes the safety conditions on `Layout::from_size_align_unchecked`. - [`PollFn` now only implements `Unpin` if the closure is `Unpin`](https://togithub.com/rust-lang/rust/pull/102737). This is a possible breaking change if users were relying on the blanket unpin implementation. See discussion on the PR for details of why this change was made. - [Drop ExactSizeIterator impl from std::char::EscapeAscii](https://togithub.com/rust-lang/rust/pull/99880) This is a backwards-incompatible change to the standard library's surface area, but is unlikely to affect real world usage. - [Do not consider a single repeated lifetime eligible for elision in the return type](https://togithub.com/rust-lang/rust/pull/103450) This behavior was unintentionally changed in 1.64.0, and this release reverts that change by making this an error again. - [Reenable disabled early syntax gates as future-incompatibility lints](https://togithub.com/rust-lang/rust/pull/99935/) - [Update the minimum external LLVM to 13](https://togithub.com/rust-lang/rust/pull/100460/) - [Don't duplicate file descriptors into stdio fds](https://togithub.com/rust-lang/rust/pull/101426/) - [Sunset RLS](https://togithub.com/rust-lang/rust/pull/100863/) - [Deny usage of `#![cfg_attr(..., crate_type = ...)]` to set the crate type](https://togithub.com/rust-lang/rust/pull/99784/) This strengthens the forward compatibility lint deprecated_cfg_attr_crate_type_name to deny. - [`llvm-has-rust-patches` allows setting the build system to treat the LLVM as having Rust-specific patches](https://togithub.com/rust-lang/rust/pull/101072) This option may need to be set for distributions that are building Rust with a patched LLVM via `llvm-config`, not the built-in LLVM. - Combining three or more languages (e.g. Objective C, C++ and Rust) into one binary may hit linker limitations when using `lld`. For more information, see [issue 102754][102754]. [102754]: https://togithub.com/rust-lang/rust/issues/102754 ## 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. - [Add `x.sh` and `x.ps1` shell scripts](https://togithub.com/rust-lang/rust/pull/99992/) - [compiletest: use target cfg instead of hard-coded tables](https://togithub.com/rust-lang/rust/pull/100260/) - [Use object instead of LLVM for reading bitcode from rlibs](https://togithub.com/rust-lang/rust/pull/98100/) - [Enable MIR inlining for optimized compilations](https://togithub.com/rust-lang/rust/pull/91743) This provides a 3-10% improvement in compiletimes for real world crates. See [perf results](https://perf.rust-lang.org/compare.html?start=aedf78e56b2279cc869962feac5153b6ba7001ed\&end=0075bb4fad68e64b6d1be06bf2db366c30bc75e1\&stat=instructions:u). ### [`v1.64.0`](https://togithub.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1640-2022-09-22) [Compare Source](https://togithub.com/rust-lang/rust/compare/1.63.0...1.64.0) \=========================== ## Language - [Unions with mutable references or tuples of allowed types are now allowed](https://togithub.com/rust-lang/rust/pull/97995/) - It is now considered valid to deallocate memory pointed to by a shared reference `&T` [if every byte in `T` is inside an `UnsafeCell`](https://togithub.com/rust-lang/rust/pull/98017/) - Unused tuple struct fields are now warned against in an allow-by-default lint, [`unused_tuple_struct_fields`](https://togithub.com/rust-lang/rust/pull/95977/), similar to the existing warning for unused struct fields. This lint will become warn-by-default in the future. ## Compiler - [Add Nintendo Switch as tier 3 target](https://togithub.com/rust-lang/rust/pull/88991/) - Refer to Rust's \[platform support page]\[platform-support-doc] for more information on Rust's tiered platform support. - [Only compile `#[used]` as llvm.compiler.used for ELF targets](https://togithub.com/rust-lang/rust/pull/93718/) - [Add the `--diagnostic-width` compiler flag to define the terminal width.](https://togithub.com/rust-lang/rust/pull/95635/) - [Add support for link-flavor `rust-lld` for iOS, tvOS and watchOS](https://togithub.com/rust-lang/rust/pull/98771/) ## Libraries - [Remove restrictions on compare-exchange memory ordering.](https://togithub.com/rust-lang/rust/pull/98383/) - You can now `write!` or `writeln!` into an `OsString`: [Implement `fmt::Write` for `OsString`](https://togithub.com/rust-lang/rust/pull/97915/) - [Make RwLockReadGuard covariant](https://togithub.com/rust-lang/rust/pull/96820/) - [Implement `FusedIterator` for `std::net::[Into]Incoming`](https://togithub.com/rust-lang/rust/pull/97300/) - [`impl AsRawFd for {Arc,Box}`](https://togithub.com/rust-lang/rust/pull/97437/) - [`ptr::copy` and `ptr::swap` are doing untyped copies](https://togithub.com/rust-lang/rust/pull/97712/) - [Add cgroupv1 support to `available_parallelism`](https://togithub.com/rust-lang/rust/pull/97925/) - [Mitigate many incorrect uses of `mem::uninitialized`](https://togithub.com/rust-lang/rust/pull/99182/) ## Stabilized APIs - [`future::IntoFuture`](https://doc.rust-lang.org/stable/std/future/trait.IntoFuture.html) - [`future::poll_fn`](https://doc.rust-lang.org/stable/std/future/fn.poll_fn.html) - [`task::ready!`](https://doc.rust-lang.org/stable/std/task/macro.ready.html) - [`num::NonZero*::checked_mul`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroUsize.html#method.checked_mul) - [`num::NonZero*::checked_pow`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroUsize.html#method.checked_pow) - [`num::NonZero*::saturating_mul`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroUsize.html#method.saturating_mul) - [`num::NonZero*::saturating_pow`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroUsize.html#method.saturating_pow) - [`num::NonZeroI*::abs`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroIsize.html#method.abs) - [`num::NonZeroI*::checked_abs`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroIsize.html#method.checked_abs) - [`num::NonZeroI*::overflowing_abs`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroIsize.html#method.overflowing_abs) - [`num::NonZeroI*::saturating_abs`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroIsize.html#method.saturating_abs) - [`num::NonZeroI*::unsigned_abs`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroIsize.html#method.unsigned_abs) - [`num::NonZeroI*::wrapping_abs`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroIsize.html#method.wrapping_abs) - [`num::NonZeroU*::checked_add`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroUsize.html#method.checked_add) - [`num::NonZeroU*::checked_next_power_of_two`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroUsize.html#method.checked_next_power_of_two) - [`num::NonZeroU*::saturating_add`](https://doc.rust-lang.org/stable/std/num/struct.NonZeroUsize.html#method.saturating_add) - [`os::unix::process::CommandExt::process_group`](https://doc.rust-lang.org/stable/std/os/unix/process/trait.CommandExt.html#tymethod.process_group) - [`os::windows::fs::FileTypeExt::is_symlink_dir`](https://doc.rust-lang.org/stable/std/os/windows/fs/trait.FileTypeExt.html#tymethod.is_symlink_dir) - [`os::windows::fs::FileTypeExt::is_symlink_file`](https://doc.rust-lang.org/stable/std/os/windows/fs/trait.FileTypeExt.html#tymethod.is_symlink_file) These types were previously stable in `std::ffi`, but are now also available in `core` and `alloc`: - [`core::ffi::CStr`](https://doc.rust-lang.org/stable/core/ffi/struct.CStr.html) - [`core::ffi::FromBytesWithNulError`](https://doc.rust-lang.org/stable/core/ffi/struct.FromBytesWithNulError.html) - [`alloc::ffi::CString`](https://doc.rust-lang.org/stable/alloc/ffi/struct.CString.html) - [`alloc::ffi::FromVecWithNulError`](https://doc.rust-lang.org/stable/alloc/ffi/struct.FromVecWithNulError.html) - [`alloc::ffi::IntoStringError`](https://doc.rust-lang.org/stable/alloc/ffi/struct.IntoStringError.html) - [`alloc::ffi::NulError`](https://doc.rust-lang.org/stable/alloc/ffi/struct.NulError.html) These types were previously stable in `std::os::raw`, but are now also available in `core::ffi` and `std::ffi`: - [`ffi::c_char`](https://doc.rust-lang.org/stable/std/ffi/type.c_char.html) - [`ffi::c_double`](https://doc.rust-lang.org/stable/std/ffi/type.c_double.html) - [`ffi::c_float`](https://doc.rust-lang.org/stable/std/ffi/type.c_float.html) - [`ffi::c_int`](https://doc.rust-lang.org/stable/std/ffi/type.c_int.html) - [`ffi::c_long`](https://doc.rust-lang.org/stable/std/ffi/type.c_long.html) - [`ffi::c_longlong`](https://doc.rust-lang.org/stable/std/ffi/type.c_longlong.html) - [`ffi::c_schar`](https://doc.rust-lang.org/stable/std/ffi/type.c_schar.html) - [`ffi::c_short`](https://doc.rust-lang.org/stable/std/ffi/type.c_short.html) - [`ffi::c_uchar`](https://doc.rust-lang.org/stable/std/ffi/type.c_uchar.html) - [`ffi::c_uint`](https://doc.rust-lang.org/stable/std/ffi/type.c_uint.html) - [`ffi::c_ulong`](https://doc.rust-lang.org/stable/std/ffi/type.c_ulong.html) - [`ffi::c_ulonglong`](https://doc.rust-lang.org/stable/std/ffi/type.c_ulonglong.html) - [`ffi::c_ushort`](https://doc.rust-lang.org/stable/std/ffi/type.c_ushort.html) These APIs are now usable in const contexts: - [`slice::from_raw_parts`](https://doc.rust-lang.org/stable/core/slice/fn.from_raw_parts.html) ## Cargo - [Packages can now inherit settings from the workspace so that the settings can be centralized in one place.](https://togithub.com/rust-lang/cargo/pull/10859) See [`workspace.package`](https://doc.rust-lang.org/nightly/cargo/reference/workspaces.html#the-workspacepackage-table) and [`workspace.dependencies`](https://doc.rust-lang.org/nightly/cargo/reference/workspaces.html#the-workspacedependencies-table) for more details on how to define these common settings. - [Cargo commands can now accept multiple `--target` flags to build for multiple targets at once](https://togithub.com/rust-lang/cargo/pull/10766), and the [`build.target`](https://doc.rust-lang.org/nightly/cargo/reference/config.html#buildtarget) config option may now take an array of multiple targets. - [The `--jobs` argument can now take a negative number to count backwards from the max CPUs.](https://togithub.com/rust-lang/cargo/pull/10844) - [`cargo add` will now update `Cargo.lock`.](https://togithub.com/rust-lang/cargo/pull/10902) - [Added](https://togithub.com/rust-lang/cargo/pull/10838) the [`--crate-type`](https://doc.rust-lang.org/nightly/cargo/commands/cargo-rustc.html#option-cargo-rustc---crate-type) flag to `cargo rustc` to override the crate type. - [Significantly improved the performance fetching git dependencies from GitHub when using a hash in the `rev` field.](https://togithub.com/rust-lang/cargo/pull/10079) ## Misc - [The `rust-analyzer` rustup component is now available on the stable channel.](https://togithub.com/rust-lang/rust/pull/98640/) ## Compatibility Notes - The minimum required versions for all `-linux-gnu` targets are now at least kernel 3.2 and glibc 2.17, for targets that previously supported older versions: [Increase the minimum linux-gnu versions](https://togithub.com/rust-lang/rust/pull/95026/) - [Network primitives are now implemented with the ideal Rust layout, not the C system layout](https://togithub.com/rust-lang/rust/pull/78802/). This can cause problems when transmuting the types. - [Add assertion that `transmute_copy`'s `U` is not larger than `T`](https://togithub.com/rust-lang/rust/pull/98839/) - [A soundness bug in `BTreeMap` was fixed](https://togithub.com/rust-lang/rust/pull/99413/) that allowed data it was borrowing to be dropped before the container. - [The Drop behavior of C-like enums cast to ints has changed](https://togithub.com/rust-lang/rust/pull/96862/). These are already discouraged by a compiler warning. - [Relate late-bound closure lifetimes to parent fn in NLL](https://togithub.com/rust-lang/rust/pull/98835/) - [Errors at const-eval time are now in future incompatibility reports](https://togithub.com/rust-lang/rust/pull/97743/) - On the `thumbv6m-none-eabi` target, some incorrect `asm!` statements were erroneously accepted if they used the high registers (r8 to r14) as an input/output operand. [This is no longer accepted](https://togithub.com/rust-lang/rust/pull/99155/). - [`impl Trait` was accidentally accepted as the associated type value of return-position `impl Trait`](https://togithub.com/rust-lang/rust/pull/97346/), without fulfilling all the trait bounds of that associated type, as long as the hidden type satisfies said bounds. This has been fixed. ## 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. - Windows builds now use profile-guided optimization, providing 10-20% improvements to compiler performance: [Utilize PGO for windows x64 rustc dist builds](https://togithub.com/rust-lang/rust/pull/96978/) - [Stop keeping metadata in memory before writing it to disk](https://togithub.com/rust-lang/rust/pull/96544/) - [compiletest: strip debuginfo by default for mode=ui](https://togithub.com/rust-lang/rust/pull/98140/) - Many improvements to generated code for derives, including performance improvements: - [Don't use match-destructuring for derived ops on structs.](https://togithub.com/rust-lang/rust/pull/98446/) - [Many small deriving cleanups](https://togithub.com/rust-lang/rust/pull/98741/) - [More derive output improvements](https://togithub.com/rust-lang/rust/pull/98758/) - [Clarify deriving code](https://togithub.com/rust-lang/rust/pull/98915/) - [Final derive output improvements](https://togithub.com/rust-lang/rust/pull/99046/) - [Stop injecting `#[allow(unused_qualifications)]` in generated `derive` implementations](https://togithub.com/rust-lang/rust/pull/99485/) - [Improve `derive(Debug)`](https://togithub.com/rust-lang/rust/pull/98190/) - [Bump to clap 3](https://togithub.com/rust-lang/rust/pull/98213/) - [fully move dropck to mir](https://togithub.com/rust-lang/rust/pull/98641/) - [Optimize `Vec::insert` for the case where `index == len`.](https://togithub.com/rust-lang/rust/pull/98755/) - [Convert rust-analyzer to an in-tree tool](https://togithub.com/rust-lang/rust/pull/99603/) ### [`v1.63.0`](https://togithub.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1630-2022-08-11) [Compare Source](https://togithub.com/rust-lang/rust/compare/1.62.1...1.63.0) \========================== ## Language - [Remove migrate borrowck mode for pre-NLL errors.][95565] - [Modify MIR building to drop repeat expressions with length zero.][95953] - [Remove label/lifetime shadowing warnings.][96296] - [Allow explicit generic arguments in the presence of `impl Trait` args.][96868] - [Make `cenum_impl_drop_cast` warnings deny-by-default.][97652] - [Prevent unwinding when `-C panic=abort` is used regardless of declared ABI.][96959] - [lub: don't bail out due to empty binders.][97867] ## Compiler - [Stabilize the `bundle` native library modifier,][95818] also removing the deprecated `static-nobundle` linking kind. - [Add Apple WatchOS compile targets\*.][95243] - [Add a Windows application manifest to rustc-main.][96737] \* Refer to Rust's \[platform support page]\[platform-support-doc] for more information on Rust's tiered platform support. ## Libraries - [Implement `Copy`, `Clone`, `PartialEq` and `Eq` for `core::fmt::Alignment`.][94530] - [Extend `ptr::null` and `null_mut` to all thin (including extern) types.][94954] - [`impl Read and Write for VecDeque`.][95632] - [STD support for the Nintendo 3DS.][95897] - [Use rounding in float to Duration conversion methods.][96051] - [Make write/print macros eagerly drop temporaries.][96455] - [Implement internal traits that enable `[OsStr]::join`.][96881] - [Implement `Hash` for `core::alloc::Layout`.][97034] - [Add capacity documentation for `OsString`.][97202] - [Put a bound on collection misbehavior.][97316] - [Make `std::mem::needs_drop` accept `?Sized`.][97675] - [`impl Termination for Infallible` and then make the `Result` impls of `Termination` more generic.][97803] - [Document Rust's stance on `/proc/self/mem`.][97837] ## Stabilized APIs - [`array::from_fn`][array::from_fn] - [`Box::into_pin`][Box::into_pin] - [`BinaryHeap::try_reserve`][BinaryHeap::try_reserve] - [`BinaryHeap::try_reserve_exact`][BinaryHeap::try_reserve_exact] - [`OsString::try_reserve`][OsString::try_reserve] - [`OsString::try_reserve_exact`][OsString::try_reserve_exact] - [`PathBuf::try_reserve`][PathBuf::try_reserve] - [`PathBuf::try_reserve_exact`][PathBuf::try_reserve_exact] - [`Path::try_exists`][Path::try_exists] - [`Ref::filter_map`][Ref::filter_map] - [`RefMut::filter_map`][RefMut::filter_map] - [`NonNull::<[T]>::len`][`NonNull::::len`] - [`ToOwned::clone_into`][ToOwned::clone_into] - [`Ipv6Addr::to_ipv4_mapped`][Ipv6Addr::to_ipv4_mapped] - [`unix::io::AsFd`][unix::io::AsFd] - [`unix::io::BorrowedFd<'fd>`][unix::io::BorrowedFd<'fd>] - [`unix::io::OwnedFd`][unix::io::OwnedFd] - [`windows::io::AsHandle`][windows::io::AsHandle] - [`windows::io::BorrowedHandle<'handle>`][windows::io::BorrowedHandle<'handle>] - [`windows::io::OwnedHandle`][windows::io::OwnedHandle] - [`windows::io::HandleOrInvalid`][windows::io::HandleOrInvalid] - [`windows::io::HandleOrNull`][windows::io::HandleOrNull] - [`windows::io::InvalidHandleError`][windows::io::InvalidHandleError] - [`windows::io::NullHandleError`][windows::io::NullHandleError] - [`windows::io::AsSocket`][windows::io::AsSocket] - [`windows::io::BorrowedSocket<'handle>`][windows::io::BorrowedSocket<'handle>] - [`windows::io::OwnedSocket`][windows::io::OwnedSocket] - [`thread::scope`][thread::scope] - [`thread::Scope`][thread::Scope] - [`thread::ScopedJoinHandle`][thread::ScopedJoinHandle] These APIs are now usable in const contexts: - [`array::from_ref`][array::from_ref] - [`slice::from_ref`][slice::from_ref] - [`intrinsics::copy`][intrinsics::copy] - [`intrinsics::copy_nonoverlapping`][intrinsics::copy_nonoverlapping] - [`<*const T>::copy_to`][<*const T>::copy_to] - [`<*const T>::copy_to_nonoverlapping`][<*const T>::copy_to_nonoverlapping] - [`<*mut T>::copy_to`][<*mut T>::copy_to] - [`<*mut T>::copy_to_nonoverlapping`][<*mut T>::copy_to_nonoverlapping] - [`<*mut T>::copy_from`][<*mut T>::copy_from] - [`<*mut T>::copy_from_nonoverlapping`][<*mut T>::copy_from_nonoverlapping] - [`str::from_utf8`][str::from_utf8] - [`Utf8Error::error_len`][Utf8Error::error_len] - [`Utf8Error::valid_up_to`][Utf8Error::valid_up_to] - [`Condvar::new`][Condvar::new] - [`Mutex::new`][Mutex::new] - [`RwLock::new`][RwLock::new] ## Cargo - [Stabilize the `--config path` command-line argument.][cargo/10755] - [Expose rust-version in the environment as `CARGO_PKG_RUST_VERSION`.][cargo/10713] ## Compatibility Notes - [`#[link]` attributes are now checked more strictly,][96885] which may introduce errors for invalid attribute arguments that were previously ignored. - [Rounding is now used when converting a float to a `Duration`.][96051] 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. - [Prepare Rust for LLVM opaque pointers.][94214] [94214]: https://togithub.com/rust-lang/rust/pull/94214/ [94530]: https://togithub.com/rust-lang/rust/pull/94530/ [94954]: https://togithub.com/rust-lang/rust/pull/94954/ [95243]: https://togithub.com/rust-lang/rust/pull/95243/ [95565]: https://togithub.com/rust-lang/rust/pull/95565/ [95632]: https://togithub.com/rust-lang/rust/pull/95632/ [95818]: https://togithub.com/rust-lang/rust/pull/95818/ [95897]: https://togithub.com/rust-lang/rust/pull/95897/ [95953]: https://togithub.com/rust-lang/rust/pull/95953/ [96051]: https://togithub.com/rust-lang/rust/pull/96051/ [96296]: https://togithub.com/rust-lang/rust/pull/96296/ [96455]: https://togithub.com/rust-lang/rust/pull/96455/ [96737]: https://togithub.com/rust-lang/rust/pull/96737/ [96868]: https://togithub.com/rust-lang/rust/pull/96868/ [96881]: https://togithub.com/rust-lang/rust/pull/96881/ [96885]: https://togithub.com/rust-lang/rust/pull/96885/ [96959]: https://togithub.com/rust-lang/rust/pull/96959/ [97034]: https://togithub.com/rust-lang/rust/pull/97034/ [97202]: https://togithub.com/rust-lang/rust/pull/97202/ [97316]: https://togithub.com/rust-lang/rust/pull/97316/ [97652]: https://togithub.com/rust-lang/rust/pull/97652/ [97675]: https://togithub.com/rust-lang/rust/pull/97675/ [97803]: https://togithub.com/rust-lang/rust/pull/97803/ [97837]: https://togithub.com/rust-lang/rust/pull/97837/ [97867]: https://togithub.com/rust-lang/rust/pull/97867/ [cargo/10713]: https://togithub.com/rust-lang/cargo/pull/10713/ [cargo/10755]: https://togithub.com/rust-lang/cargo/pull/10755/ [`array::from_fn`]: https://doc.rust-lang.org/stable/std/array/fn.from_fn.html [`Box::into_pin`]: https://doc.rust-lang.org/stable/std/boxed/struct.Box.html#method.into_pin [`BinaryHeap::try_reserve_exact`]: https://doc.rust-lang.org/stable/alloc/collections/binary_heap/struct.BinaryHeap.html#method.try_reserve_exact [`BinaryHeap::try_reserve`]: https://doc.rust-lang.org/stable/std/collections/struct.BinaryHeap.html#method.try_reserve [`OsString::try_reserve`]: https://doc.rust-lang.org/stable/std/ffi/struct.OsString.html#method.try_reserve [`OsString::try_reserve_exact`]: https://doc.rust-lang.org/stable/std/ffi/struct.OsString.html#method.try_reserve_exact [`PathBuf::try_reserve`]: https://doc.rust-lang.org/stable/std/path/struct.PathBuf.html#method.try_reserve [`PathBuf::try_reserve_exact`]: https://doc.rust-lang.org/stable/std/path/struct.PathBuf.html#method.try_reserve_exact [`Path::try_exists`]: https://doc.rust-lang.org/stable/std/path/struct.Path.html#method.try_exists [`Ref::filter_map`]: https://doc.rust-lang.org/stable/std/cell/struct.Ref.html#method.filter_map [`RefMut::filter_map`]: https://doc.rust-lang.org/stable/std/cell/struct.RefMut.html#method.filter_map [`NonNull::::len`]: https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.len [`ToOwned::clone_into`]: https://doc.rust-lang.org/stable/std/borrow/trait.ToOwned.html#method.clone_into [`Ipv6Addr::to_ipv4_mapped`]: https://doc.rust-lang.org/stable/std/net/struct.Ipv6Addr.html#method.to_ipv4_mapped [`unix::io::AsFd`]: https://doc.rust-lang.org/stable/std/os/unix/io/trait.AsFd.html [`unix::io::BorrowedFd<'fd>`]: https://doc.rust-lang.org/stable/std/os/unix/io/struct.BorrowedFd.html [`unix::io::OwnedFd`]: https://doc.rust-lang.org/stable/std/os/unix/io/struct.OwnedFd.html [`windows::io::AsHandle`]: https://doc.rust-lang.org/stable/std/os/windows/io/trait.AsHandle.html [`windows::io::BorrowedHandle<'handle>`]: https://doc.rust-lang.org/stable/std/os/windows/io/struct.BorrowedHandle.html [`windows::io::OwnedHandle`]: https://doc.rust-lang.org/stable/std/os/windows/io/struct.OwnedHandle.html [`windows::io::HandleOrInvalid`]: https://doc.rust-lang.org/stable/std/os/windows/io/struct.HandleOrInvalid.html [`windows::io::HandleOrNull`]: https://doc.rust-lang.org/stable/std/os/windows/io/struct.HandleOrNull.html [`windows::io::InvalidHandleError`]: https://doc.rust-lang.org/stable/std/os/windows/io/struct.InvalidHandleError.html [`windows::io::NullHandleError`]: https://doc.rust-lang.org/stable/std/os/windows/io/struct.NullHandleError.html [`windows::io::AsSocket`]: https://doc.rust-lang.org/stable/std/os/windows/io/trait.AsSocket.html [`windows::io::BorrowedSocket<'handle>`]: https://doc.rust-lang.org/stable/std/os/windows/io/struct.BorrowedSocket.html [`windows::io::OwnedSocket`]: https://doc.rust-lang.org/stable/std/os/windows/io/struct.OwnedSocket.html [`thread::scope`]: https://doc.rust-lang.org/stable/std/thread/fn.scope.html [`thread::Scope`]: https://doc.rust-lang.org/stable/std/thread/struct.Scope.html [`thread::ScopedJoinHandle`]: https://doc.rust-lang.org/stable/std/thread/struct.ScopedJoinHandle.html [`array::from_ref`]: https://doc.rust-lang.org/stable/std/array/fn.from_ref.html [`slice::from_ref`]: https://doc.rust-lang.org/stable/std/slice/fn.from_ref.html [`intrinsics::copy`]: https://doc.rust-lang.org/stable/std/intrinsics/fn.copy.html [`intrinsics::copy_nonoverlapping`]: https://doc.rust-lang.org/stable/std/intrinsics/fn.copy_nonoverlapping.html [`<*const T>::copy_to`]: https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.copy_to [`<*const T>::copy_to_nonoverlapping`]: https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.copy_to_nonoverlapping [`<*mut T>::copy_to`]: https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.copy_to-1 [`<*mut T>::copy_to_nonoverlapping`]: https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.copy_to_nonoverlapping-1 [`<*mut T>::copy_from`]: https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.copy_from [`<*mut T>::copy_from_nonoverlapping`]: https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.copy_from_nonoverlapping [`str::from_utf8`]: https://doc.rust-lang.org/stable/std/str/fn.from_utf8.html [`Utf8Error::error_len`]: https://doc.rust-lang.org/stable/std/str/struct.Utf8Error.html#method.error_len [`Utf8Error::valid_up_to`]: https://doc.rust-lang.org/stable/std/str/struct.Utf8Error.html#method.valid_up_to [`Condvar::new`]: https://doc.rust-lang.org/stable/std/sync/struct.Condvar.html#method.new [`Mutex::new`]: https://doc.rust-lang.org/stable/std/sync/struct.Mutex.html#method.new [`RwLock::new`]: https://doc.rust-lang.org/stable/std/sync/struct.RwLock.html#method.new ### [`v1.62.1`](https://togithub.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1621-2022-07-19) [Compare Source](https://togithub.com/rust-lang/rust/compare/1.62.0...1.62.1) \========================== Rust 1.62.1 addresses a few recent regressions in the compiler and standard library, and also mitigates a CPU vulnerability on Intel SGX. - [The compiler fixed unsound function coercions involving `impl Trait` return types.][98608] - [The compiler fixed an incremental compilation bug with `async fn` lifetimes.][98890] - [Windows added a fallback for overlapped I/O in synchronous reads and writes.][98950] - [The `x86_64-fortanix-unknown-sgx` target added a mitigation for the MMIO stale data vulnerability][98126], advisory [INTEL-SA-00615]. [98608]: https://togithub.com/rust-lang/rust/issues/98608 [98890]: https://togithub.com/rust-lang/rust/issues/98890 [98950]: https://togithub.com/rust-lang/rust/pull/98950 [98126]: https://togithub.com/rust-lang/rust/pull/98126 [INTEL-SA-00615]: https://www.intel.com/content/www/us/en/security-center/advisory/intel-sa-00615.html ### [`v1.62.0`](https://togithub.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1620-2022-06-30) [Compare Source](https://togithub.com/rust-lang/rust/compare/1.61.0...1.62.0) \========================== ## Language - [Stabilize `#[derive(Default)]` on enums with a `#[default]` variant][94457] - [Teach flow sensitive checks that visibly uninhabited call expressions never return][93313] - [Fix constants not getting dropped if part of a diverging expression][94775] - [Support unit struct/enum variant in destructuring assignment][95380] - [Remove mutable_borrow_reservation_conflict lint and allow the code pattern][96268] - [`const` functions may now specify `extern "C"` or `extern "Rust"`][95346] ## Compiler - [linker: Stop using whole-archive on dependencies of dylibs][96436] - [Make `unaligned_references` lint deny-by-default][95372] This lint is also a future compatibility lint, and is expected to eventually become a hard error. - [Only add codegen backend to dep info if -Zbinary-dep-depinfo is used][93969] - [Reject `#[thread_local]` attribute on non-static items][95006] - [Add tier 3 `aarch64-pc-windows-gnullvm` and `x86_64-pc-windows-gnullvm` targets\*][94872] - [Implement a lint to warn about unused macro rules][96150] - [Promote `x86_64-unknown-none` target to Tier 2\*][95705] \* Refer to Rust's \[platform support page]\[platform-support-doc] for more information on Rust's tiered platform support. ## Libraries - [Windows: Use a pipe relay for chaining pipes][95841] - [Replace Linux Mutex and Condvar with futex based ones.][95035] - [Replace RwLock by a futex based one on Linux][95801] - [std: directly use pthread in UNIX parker implementation][96393] ## Stabilized APIs - [`bool::then_some`][bool::then_some] - [`f32::total_cmp`][f32::total_cmp] - [`f64::total_cmp`][f64::total_cmp] - [`Stdin::lines`][Stdin::lines] - [`windows::CommandExt::raw_arg`][windows::CommandExt::raw_arg] - [`impl Default for AssertUnwindSafe`][impl Default for AssertUnwindSafe] - [`From> for Rc<[u8]>`][rc-u8-from-str] - [`From> for Arc<[u8]>`][arc-u8-from-str] - [`FusedIterator for EncodeWide`][FusedIterator for EncodeWide] - [RDM intrinsics on aarch64][stdarch/1285] ## Clippy - [Create clippy lint against unexpectedly late drop for temporaries in match scrutinee expressions][94206] ## Cargo - Added the `cargo add` command for adding dependencies to `Cargo.toml` from the command-line. [docs](https://doc.rust-lang.org/nightly/cargo/commands/cargo-add.html) - Package ID specs now support `name@version` syntax in addition to the previous `name:version` to align with the behavior in `cargo add` and other tools. `cargo install` and `cargo yank` also now support this syntax so the version does not need to passed as a separate flag. - The `git` and `registry` directories in Cargo's home directory (usually `~/.cargo`) are now marked as cache directories so that they are not included in backups or content indexing (on Windows). - Added automatic `@` argfile support, which will use "response files" if the command-line to `rustc` exceeds the operating system's limit. ## Compatibility Notes - `cargo test` now passes `--target` to `rustdoc` if the specified target is the same as the host target. [#​10594](https://togithub.com/rust-lang/cargo/pull/10594) - [rustdoc: doctests are now run on unexported `macro_rules!` macros, matching other private items][96630] - [rustdoc: Remove .woff font files][96279] - [Enforce Copy bounds for repeat elements while considering lifetimes][95819] - [Windows: Fix potential unsoundness by aborting if `File` reads or writes cannot complete synchronously][95469]. ## Internal Changes - [Unify ReentrantMutex implementations across all platforms][96042] These changes provide no direct user facing benefits, but represent significant improvements to the internals and overall performance of rustc and related tools. [93313]: https://togithub.com/rust-lang/rust/pull/93313/ [93969]: https://togithub.com/rust-lang/rust/pull/93969/ [94206]: https://togithub.com/rust-lang/rust/pull/94206/ [94457]: https://togithub.com/rust-lang/rust/pull/94457/ [94775]: https://togithub.com/rust-lang/rust/pull/94775/ [94872]: https://togithub.com/rust-lang/rust/pull/94872/ [95006]: https://togithub.com/rust-lang/rust/pull/95006/ [95035]: https://togithub.com/rust-lang/rust/pull/95035/ [95346]: https://togithub.com/rust-lang/rust/pull/95346/ [95372]: https://togithub.com/rust-lang/rust/pull/95372/ [95380]: https://togithub.com/rust-lang/rust/pull/95380/ [95431]: https://togithub.com/rust-lang/rust/pull/95431/ [95469]: https://togithub.com/rust-lang/rust/pull/95469/ [95705]: https://togithub.com/rust-lang/rust/pull/95705/ [95801]: https://togithub.com/rust-lang/rust/pull/95801/ [95819]: https://togithub.com/rust-lang/rust/pull/95819/ [95841]: https://togithub.com/rust-lang/rust/pull/95841/ [96042]: https://togithub.com/rust-lang/rust/pull/96042/ [96150]: https://togithub.com/rust-lang/rust/pull/96150/ [96268]: https://togithub.com/rust-lang/rust/pull/96268/ [96279]: https://togithub.com/rust-lang/rust/pull/96279/ [96393]: https://togithub.com/rust-lang/rust/pull/96393/ [96436]: https://togithub.com/rust-lang/rust/pull/96436/ [96557]: https://togithub.com/rust-lang/rust/pull/96557/ [96630]: https://togithub.com/rust-lang/rust/pull/96630/ [`bool::then_some`]: https://doc.rust-lang.org/stable/std/primitive.bool.html#method.then_some [`f32::total_cmp`]: https://doc.rust-lang.org/stable/std/primitive.f32.html#method.total_cmp [`f64::total_cmp`]: https://doc.rust-lang.org/stable/std/primitive.f64.html#method.total_cmp [`Stdin::lines`]: https://doc.rust-lang.org/stable/std/io/struct.Stdin.html#method.lines [`impl Default for AssertUnwindSafe`]: https://doc.rust-lang.org/stable/std/panic/struct.AssertUnwindSafe.html#impl-Default [rc-u8-from-str]: https://doc.rust-lang.org/stable/std/rc/struct.Rc.html#impl-From%3CRc%3Cstr%3E%3E [arc-u8-from-str]: https://doc.rust-lang.org/stable/std/sync/struct.Arc.html#impl-From%3CArc%3Cstr%3E%3E [stdarch/1285]: https://togithub.com/rust-lang/stdarch/pull/1285 [`windows::CommandExt::raw_arg`]: https://doc.rust-lang.org/stable/std/os/windows/process/trait.CommandExt.html#tymethod.raw_arg [`FusedIterator for EncodeWide`]: https://doc.rust-lang.org/stable/std/os/windows/ffi/struct.EncodeWide.html#impl-FusedIterator ### [`v1.61.0`](https://togithub.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1610-2022-05-19) [Compare Source](https://togithub.com/rust-lang/rust/compare/1.60.0...1.61.0) \========================== ## Language - [`const fn` signatures can now include generic trait bounds][93827] - [`const fn` signatures can now use `impl Trait` in argument and return position][93827] - [Function pointers can now be created, cast, and passed around in a `const fn`][93827] - [Recursive calls can now set the value of a function's opaque `impl Trait` return type][94081] ## Compiler - [Linking modifier syntax in `#[link]` attributes and on the command line, as well as the `whole-archive` modifier specifically, are now supported][93901] - [The `char` type is now described as UTF-32 in debuginfo][89887] - The [`#[target_feature]`][target_feature] attribute [can now be used with aarch64 features][90621] - X86 [`#[target_feature = "adx"]` is now stable][93745] ## Libraries - [`ManuallyDrop` is now documented to have the same layout as `T`][88375] - [`#[ignore = "…"]` messages are printed when running tests][92714] - [Consistently show absent stdio handles on Windows as NULL handles][93263] - [Make `std::io::stdio::lock()` return `'static` handles.][93965] Previously, the creation of locked handles to stdin/stdout/stderr would borrow the handles being locked, which prevented writing `let out = std::io::stdout().lock();` because `out` would outlive the return value of `stdout()`. Such code now works, eliminating a common pitfall that affected many Rust users. - [`Vec::from_raw_parts` is now less restrictive about its inputs][95016] - [`std::thread::available_parallelism` now takes cgroup quotas into account.][92697] Since `available_parallelism` is often used to create a thread pool for parallel computation, which may be CPU-bound for performance, `available_parallelism` will return a value consistent with the ability to use that many threads continuously, if possible. For instance, in a container with 8 virtual CPUs but quotas only allowing for 50% usage, `available_parallelism` will return 4. ## Stabilized APIs - [`Pin::static_mut`][Pin::static_mut] - [`Pin::static_ref`][Pin::static_ref] - [`Vec::retain_mut`][Vec::retain_mut] - [`VecDeque::retain_mut`][VecDeque::retain_mut] - [`Write` for `Cursor<[u8; N]>`][cursor-write-array] - [`std::os::unix::net::SocketAddr::from_pathname`][std::os::unix::net::SocketAddr::from_pathname] - [`std::process::ExitCode`][std::process::ExitCode] and [`std::process::Termination`][std::process::Termination]. The stabilization of these two APIs now makes it possible for programs to return errors from `main` with custom exit codes. - [`std::thread::JoinHandle::is_finished`][std::thread::JoinHandle::is_finished] These APIs are now usable in const contexts: - [`<*const T>::offset` and `<*mut T>::offset`][ptr-offset] - [`<*const T>::wrapping_offset` and `<*mut T>::wrapping_offset`][ptr-wrapping_offset] - [`<*const T>::add` and `<*mut T>::add`][ptr-add] - [`<*const T>::sub` and `<*mut T>::sub`][ptr-sub] - [`<*const T>::wrapping_add` and `<*mut T>::wrapping_add`][ptr-wrapping_add] - [`<*const T>::wrapping_sub` and `<*mut T>::wrapping_sub`][ptr-wrapping_sub] - [`<[T]>::as_mut_ptr`][slice-as_mut_ptr] - [`<[T]>::as_ptr_range`][slice-as_ptr_range] - [`<[T]>::as_mut_ptr_range`][slice-as_mut_ptr_range] ## Cargo No feature changes, but see compatibility notes. ## Compatibility Notes - Previously native static libraries were linked as `whole-archive` in some cases, but now rustc tries not to use `whole-archive` unless explicitly requested. This [change][93901] may result in linking errors in some cases. To fix such errors, native libraries linked from the command line, build scripts, or [`#[link]` attributes][link-attr] need to - (more common) either be reordered to respect dependencies between them (if `a` depends on `b` then `a` should go first and `b` second) - (less common) or be updated to use the [`+whole-archive`][+whole-archive] modifier. - [Catching a second unwind from FFI code while cleaning up from a Rust panic now causes the process to abort][92911] - [Proc macros no longer see `ident` matchers wrapped in groups][92472] - [The number of `#` in `r#` raw string literals is now required to be less than 256][95251] - [When checking that a dyn type satisfies a trait bound, supertrait bounds are now enforced][92285] - [`cargo vendor` now only accepts one value for each `--sync` flag][cargo/10448] - [`cfg` predicates in `all()` and `any()` are always evaluated to detect errors, instead of short-circuiting.][94295] The compatibility considerations here arise in nightly-only code that used the short-circuiting behavior of `all` to write something like `cfg(all(feature = "nightly", syntax-requiring-nightly))`, which will now fail to compile. Instead, use either `cfg_attr(feature = "nightly", ...)` or nested uses of `cfg`. - [bootstrap: static-libstdcpp is now enabled by default, and can now be disabled when llvm-tools is enabled][94832] ## 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. - [debuginfo: Refactor debuginfo generation for types][94261] - [Remove the everybody loops pass][93913] [88375]: https://togithub.com/rust-lang/rust/pull/88375/ [89887]: https://togithub.com/rust-lang/rust/pull/89887/ [90621]: https://togithub.com/rust-lang/rust/pull/90621/ [92285]: https://togithub.com/rust-lang/rust/pull/92285/ [92472]: https://togithub.com/rust-lang/rust/pull/92472/ [92697]: https://togithub.com/rust-lang/rust/pull/92697/ [92714]: https://togithub.com/rust-lang/rust/pull/92714/ [92911]: https://togithub.com/rust-lang/rust/pull/92911/ [93263]: https://togithub.com/rust-lang/rust/pull/93263/ [93745]: https://togithub.com/rust-lang/rust/pull/93745/ [93827]: https://togithub.com/rust-lang/rust/pull/93827/ [93901]: https://togithub.com/rust-lang/rust/pull/93901/ [93913]: https://togithub.com/rust-lang/rust/pull/93913/ [93965]: https://togithub.com/rust-lang/rust/pull/93965/ [94081]: https://togithub.com/rust-lang/rust/pull/94081/ [94261]: https://togithub.com/rust-lang/rust/pull/94261/ [94295]: https://togithub.com/rust-lang/rust/pull/94295/ [94832]: https://togithub.com/rust-lang/rust/pull/94832/ [95016]: https://togithub.com/rust-lang/rust/pull/95016/ [95251]: https://togithub.com/rust-lang/rust/pull/95251/ [`+whole-archive`]: https://doc.rust-lang.org/stable/rustc/command-line-arguments.html#linking-modifiers-whole-archive [`Pin::static_mut`]: https://doc.rust-lang.org/stable/std/pin/struct.Pin.html#method.static_mut [`Pin::static_ref`]: https://doc.rust-lang.org/stable/std/pin/struct.Pin.html#method.static_ref [`Vec::retain_mut`]: https://doc.rust-lang.org/stable/std/vec/struct.Vec.html#method.retain_mut [`VecDeque::retain_mut`]: https://doc.rust-lang.org/stable/std/collections/struct.VecDeque.html#method.retain_mut [`std::os::unix::net::SocketAddr::from_pathname`]: https://doc.rust-lang.org/stable/std/os/unix/net/struct.SocketAddr.html#method.from_pathname [`std::process::ExitCode`]: https://doc.rust-lang.org/stable/std/process/struct.ExitCode.html [`std::process::Termination`]: https://doc.rust-lang.org/stable/std/process/trait.Termination.html [`std::thread::JoinHandle::is_finished`]: https://doc.rust-lang.org/stable/std/thread/struct.JoinHandle.html#method.is_finished [cargo/10448]: https://togithub.com/rust-lang/cargo/pull/10448/ [cursor-write-array]: https://doc.rust-lang.org/stable/std/io/struct.Cursor.html#impl-Write-4 [link-attr]: https://doc.rust-lang.org/stable/reference/items/external-blocks.html#the-link-attribute [ptr-add]: https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.add [ptr-offset]: https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.offset [ptr-sub]: https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.sub [ptr-wrapping_add]: https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.wrapping_add [ptr-wrapping_offset]: https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.wrapping_offset [ptr-wrapping_sub]: https://doc.rust-lang.org/stable/std/primitive.pointer.html#method.wrapping_sub [slice-as_mut_ptr]: https://doc.rust-lang.org/stable/std/primitive.slice.html#method.as_mut_ptr [slice-as_mut_ptr_range]: https://doc.rust-lang.org/stable/std/primitive.slice.html#method.as_mut_ptr_range [slice-as_ptr_range]: https://doc.rust-lang.org/stable/std/primitive.slice.html#method.as_ptr_range [target_feature]: https://doc.rust-lang.org/reference/attributes/codegen.html#the-target_feature-attribute

Configuration

📅 Schedule: Branch creation - "before 5am on the first day of the month" (UTC), Automerge - At any time (no schedule defined).

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

🔕 Ignore: Close this PR and you won't be reminded about this update again.



This PR has been generated by Mend Renovate. View repository job log here.

renovate[bot] commented 10 months ago

Renovate Ignore Notification

Because you closed this PR without merging, Renovate will ignore this update (1.66.0). You will get a PR once a newer version is released. To ignore this dependency forever, add it to the ignoreDeps array of your Renovate config.

If you accidentally closed this PR, or if you changed your mind: rename this PR to get a fresh replacement PR.

epage commented 10 months ago

I've updated renovatebot to update at a slower pace