Skip to content

Stop injecting #[allow(unused_qualifications)] in generated derive implementations - #99485

Merged
bors merged 2 commits into
rust-lang:masterfrom
mdholloway:unused-qualifications-in-derive
Jul 20, 2022
Merged

Stop injecting #[allow(unused_qualifications)] in generated derive implementations#99485
bors merged 2 commits into
rust-lang:masterfrom
mdholloway:unused-qualifications-in-derive

Conversation

@mdholloway

Copy link
Copy Markdown
Contributor

Currently, the #[derive] attribute always injects an #[allow(unused_qualifications)] attribute in the generated implementation. This results in an error when a derive is used in combination with #![forbid(unused_qualifications)], because the forbid rule by definition cannot be overridden by allow.

It appears that the original issue that prompted the inclusion of #[allow(unused_qualifications)] (#19102) is no longer present in the current stable release, and the associated test case still passes, so the allow is simply removed here.

Fixes#71898.

samratand others added 2 commits July 18, 2022 22:28
Currently `#![forbid(unused_qualifications)]` is incompatible with all
derive's because we add `#[allow(unused_qualifications)]` in all
generated impl's.
@rustbotrustbot added the T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. label Jul 20, 2022
@rust-highfive

Copy link
Copy Markdown
Contributor

Thanks for the pull request, and welcome! The Rust team is excited to review your changes, and you should hear from @oli-obk (or someone else) soon.

Please see the contribution instructions for more information.

@rust-highfiverust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Jul 20, 2022
@mdhollowaymdholloway changed the title Unused qualifications in deriveStop injecting #[allow(unused_qualifications)] in generated derive implementationsJul 20, 2022
@oli-obk

Copy link
Copy Markdown
Contributor

@bors r+ rollup

@bors

bors commented Jul 20, 2022

Copy link
Copy Markdown
Collaborator

📌 Commit 05bb878 has been approved by oli-obk

It is now in the queue for this repository.

@borsbors added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jul 20, 2022
@Dylan-DPCDylan-DPC mentioned this pull request Jul 20, 2022
bors added a commit to rust-lang-ci/rust that referenced this pull request Jul 20, 2022
Rollup of 7 pull requests
Successful merges:
- rust-lang#98101 (stdlib support for Apple WatchOS)
- rust-lang#99345 (Do not allow typeck children items to constrain outer RPITs)
- rust-lang#99383 (Formalize defining_use_anchor)
- rust-lang#99436 (Add flag to configure `noalias` on `Box<T>`)
- rust-lang#99483 (Fix a numerical underflow in tuple wrap suggestion)
- rust-lang#99485 (Stop injecting `#[allow(unused_qualifications)]` in generated `derive` implementations)
- rust-lang#99486 (Refactor: remove a string comparison between types in `check_str_addition`)
Failed merges:
r? `@ghost`
`@rustbot` modify labels: rollup
@bors
bors merged commit 3257c34 into rust-lang:masterJul 20, 2022
@rustbotrustbot added this to the 1.64.0 milestone Jul 20, 2022
@mdholloway
mdholloway deleted the unused-qualifications-in-derive branch July 20, 2022 17:23
wip-sync pushed a commit to NetBSD/pkgsrc-wip that referenced this pull request Oct 11, 2022
Pkgsrc changes:
* Add patch to fix vendor/kqueue issue (on 32-bit hosts)
* Adjust other patches & line numbers
* Version bumps & checksum changes.
Upstream changes:
Version 1.64.0 (2022-09-22)
===========================
Language
--------
- [Unions with mutable references or tuples of allowed types are
now allowed](rust-lang/rust#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`](rust-lang/rust#98017)
- Unused tuple struct fields are now warned against in an
allow-by-default lint, [`unused_tuple_struct_fields`]
(rust-lang/rust#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]
(rust-lang/rust#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]
(rust-lang/rust#93718)
- [Add the `--diagnostic-width` compiler flag to define the terminal width.]
(rust-lang/rust#95635)
- [Add support for link-flavor `rust-lld` for iOS, tvOS and watchOS]
(rust-lang/rust#98771)
Libraries
---------
- [Remove restrictions on compare-exchange memory ordering.]
(rust-lang/rust#98383)
- You can now `write!` or `writeln!` into an `OsString`: [Implement
`fmt::Write` for `OsString`](rust-lang/rust#97915)
- [Make RwLockReadGuard covariant]
(rust-lang/rust#96820)
- [Implement `FusedIterator` for `std::net::[Into]Incoming`]
(rust-lang/rust#97300)
- [`impl<T: AsRawFd> AsRawFd for {Arc,Box}<T>`]
(rust-lang/rust#97437)
- [`ptr::copy` and `ptr::swap` are doing untyped copies]
(rust-lang/rust#97712)
- [Add cgroupv1 support to `available_parallelism`]
(rust-lang/rust#97925)
- [Mitigate many incorrect uses of `mem::uninitialized`]
(rust-lang/rust#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.]
(rust-lang/cargo#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]
(rust-lang/cargo#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.]
(rust-lang/cargo#10844)
- [`cargo add` will now update `Cargo.lock`.]
(rust-lang/cargo#10902)
- [Added](rust-lang/cargo#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.]
(rust-lang/cargo#10079)
Misc
----
- [The `rust-analyzer` rustup component is now available on the stable channel.]
(rust-lang/rust#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](rust-lang/rust#95026)
- [Network primitives are now implemented with the ideal Rust
layout, not the C system layout]
(rust-lang/rust#78802). This can
cause problems when transmuting the types.
- [Add assertion that `transmute_copy`'s `U` is not larger than `T`]
(rust-lang/rust#98839)
- [A soundness bug in `BTreeMap` was fixed]
(rust-lang/rust#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]
(rust-lang/rust#96862). These are already
discouraged by a compiler warning.
- [Relate late-bound closure lifetimes to parent fn in NLL]
(rust-lang/rust#98835)
- [Errors at const-eval time are now in future incompatibility reports]
(rust-lang/rust#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]
(rust-lang/rust#99155).
- [`impl Trait` was accidentally accepted as the associated type
value of return-position `impl Trait`]
(rust-lang/rust#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]
(rust-lang/rust#96978)
- [Stop keeping metadata in memory before writing it to disk]
(rust-lang/rust#96544)
- [compiletest: strip debuginfo by default for mode=ui]
(rust-lang/rust#98140)
- Many improvements to generated code for derives, including
performance improvements:
- [Don't use match-destructuring for derived ops on structs.]
(rust-lang/rust#98446)
- [Many small deriving cleanups]
(rust-lang/rust#98741)
- [More derive output improvements]
(rust-lang/rust#98758)
- [Clarify deriving code](rust-lang/rust#98915)
- [Final derive output improvements]
(rust-lang/rust#99046)
- [Stop injecting `#[allow(unused_qualifications)]` in generated
`derive` implementations](rust-lang/rust#99485)
- [Improve `derive(Debug)`](rust-lang/rust#98190)
- [Bump to clap 3](rust-lang/rust#98213)
- [fully move dropck to mir](rust-lang/rust#98641)
- [Optimize `Vec::insert` for the case where `index == len`.]
(rust-lang/rust#98755)
- [Convert rust-analyzer to an in-tree tool]
(rust-lang/rust#99603)
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request Nov 16, 2022
Pkgsrc changes:
* This package now contains rust-analyzer, so implicitly
conflicts with that pkgsrc package. The same goes for
the rust-src package.
* Add NetBSD/arm6 port
* Add unfinished NetBSD/mipsel port
* Revert the use of the internal LLVM,
should now build with the new pkgsrc LLVM (15).
* Add depndence on compat80 for sparc64 to fix the build
* Adapt patches
* Add CHECK_INTERPRETER_SKIP for a few (mostly unused) files.
(A proper fix may come later.)
Upstream changes:
Version 1.64.0 (2022-09-22)
===========================
Language
--------
- [Unions with mutable references or tuples of allowed types are
now allowed](rust-lang/rust#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`](rust-lang/rust#98017)
- Unused tuple struct fields are now warned against in an
allow-by-default lint, [`unused_tuple_struct_fields`]
(rust-lang/rust#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]
(rust-lang/rust#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]
(rust-lang/rust#93718)
- [Add the `--diagnostic-width` compiler flag to define the terminal width.]
(rust-lang/rust#95635)
- [Add support for link-flavor `rust-lld` for iOS, tvOS and watchOS]
(rust-lang/rust#98771)
Libraries
---------
- [Remove restrictions on compare-exchange memory ordering.]
(rust-lang/rust#98383)
- You can now `write!` or `writeln!` into an `OsString`: [Implement
`fmt::Write` for `OsString`](rust-lang/rust#97915)
- [Make RwLockReadGuard covariant]
(rust-lang/rust#96820)
- [Implement `FusedIterator` for `std::net::[Into]Incoming`]
(rust-lang/rust#97300)
- [`impl<T: AsRawFd> AsRawFd for {Arc,Box}<T>`]
(rust-lang/rust#97437)
- [`ptr::copy` and `ptr::swap` are doing untyped copies]
(rust-lang/rust#97712)
- [Add cgroupv1 support to `available_parallelism`]
(rust-lang/rust#97925)
- [Mitigate many incorrect uses of `mem::uninitialized`]
(rust-lang/rust#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.]
(rust-lang/cargo#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]
(rust-lang/cargo#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.]
(rust-lang/cargo#10844)
- [`cargo add` will now update `Cargo.lock`.]
(rust-lang/cargo#10902)
- [Added](rust-lang/cargo#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.]
(rust-lang/cargo#10079)
Misc
----
- [The `rust-analyzer` rustup component is now available on the stable channel.]
(rust-lang/rust#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](rust-lang/rust#95026)
- [Network primitives are now implemented with the ideal Rust
layout, not the C system layout]
(rust-lang/rust#78802). This can
cause problems when transmuting the types.
- [Add assertion that `transmute_copy`'s `U` is not larger than `T`]
(rust-lang/rust#98839)
- [A soundness bug in `BTreeMap` was fixed]
(rust-lang/rust#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]
(rust-lang/rust#96862). These are already
discouraged by a compiler warning.
- [Relate late-bound closure lifetimes to parent fn in NLL]
(rust-lang/rust#98835)
- [Errors at const-eval time are now in future incompatibility reports]
(rust-lang/rust#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]
(rust-lang/rust#99155).
- [`impl Trait` was accidentally accepted as the associated type
value of return-position `impl Trait`]
(rust-lang/rust#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]
(rust-lang/rust#96978)
- [Stop keeping metadata in memory before writing it to disk]
(rust-lang/rust#96544)
- [compiletest: strip debuginfo by default for mode=ui]
(rust-lang/rust#98140)
- Many improvements to generated code for derives, including
performance improvements:
- [Don't use match-destructuring for derived ops on structs.]
(rust-lang/rust#98446)
- [Many small deriving cleanups]
(rust-lang/rust#98741)
- [More derive output improvements]
(rust-lang/rust#98758)
- [Clarify deriving code](rust-lang/rust#98915)
- [Final derive output improvements]
(rust-lang/rust#99046)
- [Stop injecting `#[allow(unused_qualifications)]` in generated
`derive` implementations](rust-lang/rust#99485)
- [Improve `derive(Debug)`](rust-lang/rust#98190)
- [Bump to clap 3](rust-lang/rust#98213)
- [fully move dropck to mir](rust-lang/rust#98641)
- [Optimize `Vec::insert` for the case where `index == len`.]
(rust-lang/rust#98755)
- [Convert rust-analyzer to an in-tree tool]
(rust-lang/rust#99603)
msk pushed a commit to msk/pkgsrc that referenced this pull request May 11, 2026
Pkgsrc changes:
* This package now contains rust-analyzer, so implicitly
conflicts with that pkgsrc package. The same goes for
the rust-src package.
* Add NetBSD/arm6 port
* Add unfinished NetBSD/mipsel port
* Revert the use of the internal LLVM,
should now build with the new pkgsrc LLVM (15).
* Add depndence on compat80 for sparc64 to fix the build
* Adapt patches
* Add CHECK_INTERPRETER_SKIP for a few (mostly unused) files.
(A proper fix may come later.)
Upstream changes:
Version 1.64.0 (2022-09-22)
===========================
Language
--------
- [Unions with mutable references or tuples of allowed types are
now allowed](rust-lang/rust#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`](rust-lang/rust#98017)
- Unused tuple struct fields are now warned against in an
allow-by-default lint, [`unused_tuple_struct_fields`]
(rust-lang/rust#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]
(rust-lang/rust#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]
(rust-lang/rust#93718)
- [Add the `--diagnostic-width` compiler flag to define the terminal width.]
(rust-lang/rust#95635)
- [Add support for link-flavor `rust-lld` for iOS, tvOS and watchOS]
(rust-lang/rust#98771)
Libraries
---------
- [Remove restrictions on compare-exchange memory ordering.]
(rust-lang/rust#98383)
- You can now `write!` or `writeln!` into an `OsString`: [Implement
`fmt::Write` for `OsString`](rust-lang/rust#97915)
- [Make RwLockReadGuard covariant]
(rust-lang/rust#96820)
- [Implement `FusedIterator` for `std::net::[Into]Incoming`]
(rust-lang/rust#97300)
- [`impl<T: AsRawFd> AsRawFd for {Arc,Box}<T>`]
(rust-lang/rust#97437)
- [`ptr::copy` and `ptr::swap` are doing untyped copies]
(rust-lang/rust#97712)
- [Add cgroupv1 support to `available_parallelism`]
(rust-lang/rust#97925)
- [Mitigate many incorrect uses of `mem::uninitialized`]
(rust-lang/rust#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.]
(rust-lang/cargo#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]
(rust-lang/cargo#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.]
(rust-lang/cargo#10844)
- [`cargo add` will now update `Cargo.lock`.]
(rust-lang/cargo#10902)
- [Added](rust-lang/cargo#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.]
(rust-lang/cargo#10079)
Misc
----
- [The `rust-analyzer` rustup component is now available on the stable channel.]
(rust-lang/rust#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](rust-lang/rust#95026)
- [Network primitives are now implemented with the ideal Rust
layout, not the C system layout]
(rust-lang/rust#78802). This can
cause problems when transmuting the types.
- [Add assertion that `transmute_copy`'s `U` is not larger than `T`]
(rust-lang/rust#98839)
- [A soundness bug in `BTreeMap` was fixed]
(rust-lang/rust#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]
(rust-lang/rust#96862). These are already
discouraged by a compiler warning.
- [Relate late-bound closure lifetimes to parent fn in NLL]
(rust-lang/rust#98835)
- [Errors at const-eval time are now in future incompatibility reports]
(rust-lang/rust#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]
(rust-lang/rust#99155).
- [`impl Trait` was accidentally accepted as the associated type
value of return-position `impl Trait`]
(rust-lang/rust#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]
(rust-lang/rust#96978)
- [Stop keeping metadata in memory before writing it to disk]
(rust-lang/rust#96544)
- [compiletest: strip debuginfo by default for mode=ui]
(rust-lang/rust#98140)
- Many improvements to generated code for derives, including
performance improvements:
- [Don't use match-destructuring for derived ops on structs.]
(rust-lang/rust#98446)
- [Many small deriving cleanups]
(rust-lang/rust#98741)
- [More derive output improvements]
(rust-lang/rust#98758)
- [Clarify deriving code](rust-lang/rust#98915)
- [Final derive output improvements]
(rust-lang/rust#99046)
- [Stop injecting `#[allow(unused_qualifications)]` in generated
`derive` implementations](rust-lang/rust#99485)
- [Improve `derive(Debug)`](rust-lang/rust#98190)
- [Bump to clap 3](rust-lang/rust#98213)
- [fully move dropck to mir](rust-lang/rust#98641)
- [Optimize `Vec::insert` for the case where `index == len`.]
(rust-lang/rust#98755)
- [Convert rust-analyzer to an in-tree tool]
(rust-lang/rust#99603)
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request May 13, 2026
Pkgsrc changes:
* This package now contains rust-analyzer, so implicitly
conflicts with that pkgsrc package. The same goes for
the rust-src package.
* Add NetBSD/arm6 port
* Add unfinished NetBSD/mipsel port
* Revert the use of the internal LLVM,
should now build with the new pkgsrc LLVM (15).
* Add depndence on compat80 for sparc64 to fix the build
* Adapt patches
* Add CHECK_INTERPRETER_SKIP for a few (mostly unused) files.
(A proper fix may come later.)
Upstream changes:
Version 1.64.0 (2022-09-22)
===========================
Language
--------
- [Unions with mutable references or tuples of allowed types are
now allowed](rust-lang/rust#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`](rust-lang/rust#98017)
- Unused tuple struct fields are now warned against in an
allow-by-default lint, [`unused_tuple_struct_fields`]
(rust-lang/rust#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]
(rust-lang/rust#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]
(rust-lang/rust#93718)
- [Add the `--diagnostic-width` compiler flag to define the terminal width.]
(rust-lang/rust#95635)
- [Add support for link-flavor `rust-lld` for iOS, tvOS and watchOS]
(rust-lang/rust#98771)
Libraries
---------
- [Remove restrictions on compare-exchange memory ordering.]
(rust-lang/rust#98383)
- You can now `write!` or `writeln!` into an `OsString`: [Implement
`fmt::Write` for `OsString`](rust-lang/rust#97915)
- [Make RwLockReadGuard covariant]
(rust-lang/rust#96820)
- [Implement `FusedIterator` for `std::net::[Into]Incoming`]
(rust-lang/rust#97300)
- [`impl<T: AsRawFd> AsRawFd for {Arc,Box}<T>`]
(rust-lang/rust#97437)
- [`ptr::copy` and `ptr::swap` are doing untyped copies]
(rust-lang/rust#97712)
- [Add cgroupv1 support to `available_parallelism`]
(rust-lang/rust#97925)
- [Mitigate many incorrect uses of `mem::uninitialized`]
(rust-lang/rust#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.]
(rust-lang/cargo#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]
(rust-lang/cargo#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.]
(rust-lang/cargo#10844)
- [`cargo add` will now update `Cargo.lock`.]
(rust-lang/cargo#10902)
- [Added](rust-lang/cargo#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.]
(rust-lang/cargo#10079)
Misc
----
- [The `rust-analyzer` rustup component is now available on the stable channel.]
(rust-lang/rust#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](rust-lang/rust#95026)
- [Network primitives are now implemented with the ideal Rust
layout, not the C system layout]
(rust-lang/rust#78802). This can
cause problems when transmuting the types.
- [Add assertion that `transmute_copy`'s `U` is not larger than `T`]
(rust-lang/rust#98839)
- [A soundness bug in `BTreeMap` was fixed]
(rust-lang/rust#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]
(rust-lang/rust#96862). These are already
discouraged by a compiler warning.
- [Relate late-bound closure lifetimes to parent fn in NLL]
(rust-lang/rust#98835)
- [Errors at const-eval time are now in future incompatibility reports]
(rust-lang/rust#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]
(rust-lang/rust#99155).
- [`impl Trait` was accidentally accepted as the associated type
value of return-position `impl Trait`]
(rust-lang/rust#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]
(rust-lang/rust#96978)
- [Stop keeping metadata in memory before writing it to disk]
(rust-lang/rust#96544)
- [compiletest: strip debuginfo by default for mode=ui]
(rust-lang/rust#98140)
- Many improvements to generated code for derives, including
performance improvements:
- [Don't use match-destructuring for derived ops on structs.]
(rust-lang/rust#98446)
- [Many small deriving cleanups]
(rust-lang/rust#98741)
- [More derive output improvements]
(rust-lang/rust#98758)
- [Clarify deriving code](rust-lang/rust#98915)
- [Final derive output improvements]
(rust-lang/rust#99046)
- [Stop injecting `#[allow(unused_qualifications)]` in generated
`derive` implementations](rust-lang/rust#99485)
- [Improve `derive(Debug)`](rust-lang/rust#98190)
- [Bump to clap 3](rust-lang/rust#98213)
- [fully move dropck to mir](rust-lang/rust#98641)
- [Optimize `Vec::insert` for the case where `index == len`.]
(rust-lang/rust#98755)
- [Convert rust-analyzer to an in-tree tool]
(rust-lang/rust#99603)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

S-waiting-on-borsStatus: Waiting on bors to run and complete tests. Bors will change the label on completion.T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

#[forbid(unused_qualifications)] is incompatible with all builtin derives

6 participants

@mdholloway@rust-highfive@oli-obk@bors@rustbot@samrat