Skip to content

compiletest: strip debuginfo by default for mode=ui - #98140

Merged
bors merged 1 commit into
rust-lang:masterfrom
klensy:compiletest-strip
Jun 26, 2022
Merged

compiletest: strip debuginfo by default for mode=ui#98140
bors merged 1 commit into
rust-lang:masterfrom
klensy:compiletest-strip

Conversation

@klensy

@klensyklensy commented Jun 15, 2022

Copy link
Copy Markdown
Contributor

This reduces occupied disk space, for example for src/test/ui it drops from 1972mb to 132mb (x86_64-pc-windows-msvc).

Individual tests that require debuginfo/symbols should turn this option off (as in fixed tests).

@rustbotrustbot added the T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. label Jun 15, 2022
@rust-highfive

Copy link
Copy Markdown
Contributor

r? @Mark-Simulacrum

(rust-highfive has picked a reviewer for you, use r? to override)

@rust-highfiverust-highfive added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Jun 15, 2022
@rust-log-analyzer

This comment has been minimized.

@klensy
klensyforce-pushed the compiletest-strip branch 2 times, most recently from 9df2875 to 08db24aCompareJune 15, 2022 17:48
@Mark-Simulacrum

Copy link
Copy Markdown
Member

Is there a reason to just strip symbols, not all debuginfo?

I'm mildly concerned that we might reduce test coverage for something even with this PR (e.g., if somehow the debug symbols affected the binary) but that seems like a pretty low risk, so I'm OK moving ahead with it giving the good impact (~10x reduction in disk space usage).

@Mark-SimulacrumMark-Simulacrum added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jun 18, 2022
@klensy

klensy commented Jun 18, 2022

Copy link
Copy Markdown
ContributorAuthor

Is there a reason to just strip symbols, not all debuginfo?

Given description from https://doc.rust-lang.org/rustc/codegen-options/index.html#strip, -Cstrip=symbols means strip debuginfo + other symbols, but not strip only symbols.

@Mark-Simulacrum

Copy link
Copy Markdown
Member

Ah, interesting. Okay.

In that case I think we can move ahead with this.

@bors r+ rollup=never

@bors

bors commented Jun 18, 2022

Copy link
Copy Markdown
Collaborator

📌 Commit 08db24abe3f7b92ef47ecb690854efd51978d93b has been approved by Mark-Simulacrum

@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-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Jun 18, 2022
@bors

bors commented Jun 19, 2022

Copy link
Copy Markdown
Collaborator

⌛ Testing commit 08db24abe3f7b92ef47ecb690854efd51978d93b with merge e45c5d37f93e0bd6a1a761e451c391c4dc85f7f5...

@rust-log-analyzer

This comment has been minimized.

@bors

bors commented Jun 19, 2022

Copy link
Copy Markdown
Collaborator

💔 Test failed - checks-actions

@borsbors added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Jun 19, 2022
@klensy
klensyforce-pushed the compiletest-strip branch 2 times, most recently from 96a0be2 to 7f48ea0CompareJune 19, 2022 11:20
Comment threadsrc/test/ui/numbers-arithmetic/promoted_overflow.rs Outdated
Comment threadsrc/test/ui/panics/unique-panic.rs Outdated
@rust-log-analyzer

This comment has been minimized.

@klensy
klensyforce-pushed the compiletest-strip branch from 7f48ea0 to 3a9085aCompareJune 19, 2022 11:34
@Mark-Simulacrum

Copy link
Copy Markdown
Member

@bors r+

@bors

bors commented Jun 19, 2022

Copy link
Copy Markdown
Collaborator

📌 Commit 3a9085aa78118d9f0528d56118891e80317374f8 has been approved by Mark-Simulacrum

@borsbors removed the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Jun 19, 2022
@borsbors added the S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. label Jun 22, 2022
@bors

bors commented Jun 22, 2022

Copy link
Copy Markdown
Collaborator

⌛ Testing commit 6ceb9f9a9d15a1deb2b090d9fba1a7e8b1eb9933 with merge 62cf18e333405ba4a603262e25c94bb8666cf0a9...

@bors

bors commented Jun 22, 2022

Copy link
Copy Markdown
Collaborator

💔 Test failed - checks-actions

@borsbors added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Jun 22, 2022
@rust-log-analyzer

This comment has been minimized.

@klensy
klensyforce-pushed the compiletest-strip branch from 6ceb9f9 to 18ed1faCompareJune 22, 2022 11:44
@Mark-Simulacrum

Copy link
Copy Markdown
Member

@bors retry

@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 Jun 23, 2022
@Mark-Simulacrum

Copy link
Copy Markdown
Member

@bors r+ rollup=never

@bors

bors commented Jun 23, 2022

Copy link
Copy Markdown
Collaborator

📌 Commit 18ed1fa has been approved by Mark-Simulacrum

@bors

bors commented Jun 23, 2022

Copy link
Copy Markdown
Collaborator

🌲 The tree is currently closed for pull requests below priority 1000. This pull request will be tested once the tree is reopened.

@bors

bors commented Jun 26, 2022

Copy link
Copy Markdown
Collaborator

⌛ Testing commit 18ed1fa with merge 639a655...

@bors

bors commented Jun 26, 2022

Copy link
Copy Markdown
Collaborator

☀️ Test successful - checks-actions
Approved by: Mark-Simulacrum
Pushing 639a655 to master...

@borsbors added the merged-by-bors This PR was explicitly merged by bors. label Jun 26, 2022
@bors
bors merged commit 639a655 into rust-lang:masterJun 26, 2022
@rustbotrustbot added this to the 1.64.0 milestone Jun 26, 2022
@rust-timer

Copy link
Copy Markdown
Collaborator

Finished benchmarking commit (639a655): comparison url.

Instruction count

  • Primary benchmarks: 😿 relevant regression found
  • Secondary benchmarks: 😿 relevant regressions found
mean1maxcount2
Regressions 😿
(primary)
0.3%0.3%1
Regressions 😿
(secondary)
0.6%0.7%6
Improvements 🎉
(primary)
N/AN/A0
Improvements 🎉
(secondary)
N/AN/A0
All 😿🎉 (primary)0.3%0.3%1

Max RSS (memory usage)

Results
  • Primary benchmarks: 😿 relevant regression found
  • Secondary benchmarks: 🎉 relevant improvement found
mean1maxcount2
Regressions 😿
(primary)
2.8%2.8%1
Regressions 😿
(secondary)
N/AN/A0
Improvements 🎉
(primary)
N/AN/A0
Improvements 🎉
(secondary)
-3.9%-3.9%1
All 😿🎉 (primary)2.8%2.8%1

Cycles

This benchmark run did not return any relevant results for this metric.

If you disagree with this performance assessment, please file an issue in rust-lang/rustc-perf.

Next Steps: If you can justify the regressions found in this perf run, please indicate this with @rustbot label: +perf-regression-triaged along with sufficient written justification. If you cannot justify the regressions please open an issue or create a new PR that fixes the regressions, add a comment linking to the newly created issue or PR, and then add the perf-regression-triaged label to this PR.

@rustbot label: +perf-regression

Footnotes

  1. the arithmetic mean of the percent change2

  2. number of relevant changes2

@rustbotrustbot added the perf-regression Performance regression. label Jun 26, 2022
@rylev

Copy link
Copy Markdown
Member

Looks like there is some new noise in the keccak benchmark. Marking this as triaged.

@rustbot label: +perf-regression-triaged

@rustbotrustbot added the perf-regression-triaged The performance regression has been triaged. label Jun 28, 2022
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

merged-by-borsThis PR was explicitly merged by bors.perf-regressionPerformance regression.perf-regression-triagedThe performance regression has been triaged.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.

9 participants

@klensy@rust-highfive@rust-log-analyzer@Mark-Simulacrum@bors@bjorn3@rust-timer@rylev@rustbot