Skip to content

Demote x86_64-apple-darwin to Tier 2 with host tools - #145252

Merged
bors merged 2 commits into
rust-lang:masterfrom
shepmaster:demote-x86_64-apple-darwin-to-tier-2
Aug 20, 2025
Merged

Demote x86_64-apple-darwin to Tier 2 with host tools#145252
bors merged 2 commits into
rust-lang:masterfrom
shepmaster:demote-x86_64-apple-darwin-to-tier-2

Conversation

@shepmaster

@shepmastershepmaster commented Aug 11, 2025

Copy link
Copy Markdown
Member

Switch to only using aarch64 runners (implying we are now cross-compiling) and stop running tests. In the future, we could enable (some?) tests via Rosetta 2.

This implements the decision from rust-lang/rfcs#3841.

@rustbot

Copy link
Copy Markdown
Collaborator

r? @jdno

rustbot has assigned @jdno.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

@rustbotrustbot added A-CI Area: Our Github Actions CI A-testsuite Area: The testsuite used to check the correctness of rustc S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-infra Relevant to the infrastructure team, which will review and decide on the PR/issue. labels Aug 11, 2025
@jieyouxujieyouxu added the beta-nominated Nominated for backporting to the compiler in the beta channel. label Aug 11, 2025
@shepmaster

Copy link
Copy Markdown
MemberAuthor

@bors2 try jobs=dist-x86_64-apple

@rust-bors

rust-borsBot commented Aug 11, 2025

Copy link
Copy Markdown
Contributor

⌛ Trying commit c82a9f2 with merge b05ee4d

To cancel the try build, run the command @bors try cancel.

rust-borsBot added a commit that referenced this pull request Aug 11, 2025
…-2, r=<try>
Demote x86_64-apple-darwin to Tier 2 with host tools
try-job: dist-x86_64-apple
@jieyouxu

Copy link
Copy Markdown
Member

Discussed beta backport during infra meeting: #t-infra > meeting 2025-08-11 @ 💬

@rustbot label: +beta-accepted

@rustbotrustbot added the beta-accepted Accepted for backporting to the compiler in the beta channel. label Aug 11, 2025
@ehussehuss added the relnotes Marks issues that should be documented in the release notes of the next release. label Aug 11, 2025
@rust-log-analyzer

This comment has been minimized.

@rust-bors

rust-borsBot commented Aug 11, 2025

Copy link
Copy Markdown
Contributor

💔 Test for b05ee4d failed: CI. Failed jobs:

@shepmaster
shepmasterforce-pushed the demote-x86_64-apple-darwin-to-tier-2 branch from c82a9f2 to 5d3595eCompareAugust 11, 2025 17:37
@shepmaster

Copy link
Copy Markdown
MemberAuthor

@bors2 try jobs=dist-x86_64-apple

rust-borsBot added a commit that referenced this pull request Aug 11, 2025
…-2, r=<try>
Demote x86_64-apple-darwin to Tier 2 with host tools
try-job: dist-x86_64-apple
@rust-bors

This comment has been minimized.

@rust-log-analyzer

This comment has been minimized.

@rust-bors

rust-borsBot commented Aug 11, 2025

Copy link
Copy Markdown
Contributor

💔 Test for c20c6a6 failed: CI. Failed jobs:

Comment threadsrc/ci/github-actions/jobs.yml
@shepmaster
shepmasterforce-pushed the demote-x86_64-apple-darwin-to-tier-2 branch from 5d3595e to 77e8080CompareAugust 12, 2025 15:25
@rustbot

Copy link
Copy Markdown
Collaborator

Some changes occurred in src/doc/rustc/src/platform-support

cc @Noratrieb

These commits modify compiler targets.
(See the Target Tier Policy.)

@shepmaster

Copy link
Copy Markdown
MemberAuthor

@bors2 try jobs=dist-x86_64-apple

rust-borsBot added a commit that referenced this pull request Aug 12, 2025
…-2, r=<try>
Demote x86_64-apple-darwin to Tier 2 with host tools
try-job: dist-x86_64-apple
@rust-bors

This comment has been minimized.

@rust-log-analyzer

This comment has been minimized.

@rust-bors

rust-borsBot commented Aug 12, 2025

Copy link
Copy Markdown
Contributor

💔 Test for 3af1931 failed: CI. Failed jobs:

@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 Aug 19, 2025
@shepmaster

Copy link
Copy Markdown
MemberAuthor

For record keeping, @Kobzolapproved on Zulip

jhpratt added a commit to jhpratt/rust that referenced this pull request Aug 19, 2025
…win-to-tier-2, r=Kobzol,madsmtm
Demote x86_64-apple-darwin to Tier 2 with host tools
Switch to only using aarch64 runners (implying we are now cross-compiling) and stop running tests. In the future, we could enable (some?) tests via Rosetta 2.
This implements the decision from rust-lang/rfcs#3841.
@jhprattjhpratt mentioned this pull request Aug 19, 2025
jhpratt added a commit to jhpratt/rust that referenced this pull request Aug 19, 2025
…win-to-tier-2, r=Kobzol,madsmtm
Demote x86_64-apple-darwin to Tier 2 with host tools
Switch to only using aarch64 runners (implying we are now cross-compiling) and stop running tests. In the future, we could enable (some?) tests via Rosetta 2.
This implements the decision from rust-lang/rfcs#3841.
This was referenced Aug 19, 2025
bors added a commit that referenced this pull request Aug 20, 2025
Rollup of 13 pull requests
Successful merges:
- #139357 (Fix parameter order for `_by()` variants of `min` / `max`/ `minmax` in `std::cmp`)
- #140314 (Rustdoc: typecheck scrape-examples.js)
- #140794 (mention lint group in default level lint note)
- #145006 (Clarify EOF handling for `BufRead::skip_until`)
- #145252 (Demote x86_64-apple-darwin to Tier 2 with host tools)
- #145359 (Fix bug where `rustdoc-js` tester would not pick the right `search.js` file if there is more than one)
- #145381 (Implement feature `int_lowest_highest_one` for integer and NonZero types)
- #145417 (std_detect: RISC-V platform guide documentation)
- #145531 (Add runtime detection for APX-F and AVX10)
- #145619 (`std_detect`: Use `rustc-std-workspace-*` to pull in `compiler-builtins`)
- #145622 (Remove the std workspace patch for `compiler-builtins`)
- #145623 (Pretty print the name of an future from calling async closure)
- #145626 (add a fallback implementation for the `prefetch_*` intrinsics )
r? `@ghost`
`@rustbot` modify labels: rollup
@bors
bors merged commit 7b7ad4d into rust-lang:masterAug 20, 2025
11 checks passed
@rustbotrustbot added this to the 1.91.0 milestone Aug 20, 2025
rust-timer added a commit that referenced this pull request Aug 20, 2025
Rollup merge of #145252 - shepmaster:demote-x86_64-apple-darwin-to-tier-2, r=Kobzol,madsmtm
Demote x86_64-apple-darwin to Tier 2 with host tools
Switch to only using aarch64 runners (implying we are now cross-compiling) and stop running tests. In the future, we could enable (some?) tests via Rosetta 2.
This implements the decision from rust-lang/rfcs#3841.
github-actionsBot pushed a commit to rust-lang/miri that referenced this pull request Aug 21, 2025
Rollup of 13 pull requests
Successful merges:
- rust-lang/rust#139357 (Fix parameter order for `_by()` variants of `min` / `max`/ `minmax` in `std::cmp`)
- rust-lang/rust#140314 (Rustdoc: typecheck scrape-examples.js)
- rust-lang/rust#140794 (mention lint group in default level lint note)
- rust-lang/rust#145006 (Clarify EOF handling for `BufRead::skip_until`)
- rust-lang/rust#145252 (Demote x86_64-apple-darwin to Tier 2 with host tools)
- rust-lang/rust#145359 (Fix bug where `rustdoc-js` tester would not pick the right `search.js` file if there is more than one)
- rust-lang/rust#145381 (Implement feature `int_lowest_highest_one` for integer and NonZero types)
- rust-lang/rust#145417 (std_detect: RISC-V platform guide documentation)
- rust-lang/rust#145531 (Add runtime detection for APX-F and AVX10)
- rust-lang/rust#145619 (`std_detect`: Use `rustc-std-workspace-*` to pull in `compiler-builtins`)
- rust-lang/rust#145622 (Remove the std workspace patch for `compiler-builtins`)
- rust-lang/rust#145623 (Pretty print the name of an future from calling async closure)
- rust-lang/rust#145626 (add a fallback implementation for the `prefetch_*` intrinsics )
r? `@ghost`
`@rustbot` modify labels: rollup
@cuvipercuviper mentioned this pull request Aug 21, 2025
@cuvipercuviper modified the milestones: 1.91.0, 1.90.0Aug 21, 2025
@cuvipercuviper removed the beta-nominated Nominated for backporting to the compiler in the beta channel. label Aug 21, 2025
bors added a commit that referenced this pull request Aug 21, 2025
[beta] backports
- Gate const trait syntax #144956
- Demote x86_64-apple-darwin to Tier 2 with host tools #145252
- Do not use effective_visibilities query for Adt types of a local trait while proving a where-clause #145642
r? cuviper
wip-sync pushed a commit to NetBSD/pkgsrc-wip that referenced this pull request Sep 20, 2025
Pkgsrc changes:
* Adjust patches to adapt to upstream changes and new versions.
* assosicated checksums
Upstream changes relative to 1.89.0:
Version 1.90 (2025-09-18)
==========================
Language
--------
- [Split up the `unknown_or_malformed_diagnostic_attributes` lint]
(rust-lang/rust#140717). This lint has
been split up into four finer-grained lints, with
`unknown_or_malformed_diagnostic_attributes` now being the lint
group that contains these lints:
1. `unknown_diagnostic_attributes`: unknown to the current compiler
2. `misplaced_diagnostic_attributes`: placed on the wrong item
3. `malformed_diagnostic_attributes`: malformed attribute syntax or options
4. `malformed_diagnostic_format_literals`: malformed format string literal
- [Allow constants whose final value has references to mutable/external
memory, but reject such constants as patterns]
(rust-lang/rust#140942)
- [Allow volatile access to non-Rust memory, including address 0]
(rust-lang/rust#141260)
Compiler
--------
- [Use `lld` by default on `x86_64-unknown-linux-gnu`]
(rust-lang/rust#140525).
- [Tier 3 `musl` targets now link dynamically by default]
(rust-lang/rust#144410). Affected targets:
- `mips64-unknown-linux-muslabi64`
- `powerpc64-unknown-linux-musl`
- `powerpc-unknown-linux-musl`
- `powerpc-unknown-linux-muslspe`
- `riscv32gc-unknown-linux-musl`
- `s390x-unknown-linux-musl`
- `thumbv7neon-unknown-linux-musleabihf`
Platform Support
----------------
- [Demote `x86_64-apple-darwin` to Tier 2 with host tools]
(rust-lang/rust#145252)
Refer to Rust's [platform support page][platform-support-doc]
for more information on Rust's tiered platform support.
[platform-support-doc]: https://doc.rust-lang.org/rustc/platform-support.html
Libraries
---------
- [Stabilize `u*::{checked,overflowing,saturating,wrapping}_sub_signed`]
(rust-lang/rust#126043)
- [Allow comparisons between `CStr`, `CString`, and `Cow<CStr>`]
(rust-lang/rust#137268)
- [Remove some unsized tuple impls since unsized tuples can't be constructed]
(rust-lang/rust#138340)
- [Set `MSG_NOSIGNAL` for `UnixStream`]
(rust-lang/rust#140005)
- [`proc_macro::Ident::new` now supports `$crate`.]
(rust-lang/rust#141996)
- [Guarantee the pointer returned from `Thread::into_raw` has at
least 8 bytes of alignment]
(rust-lang/rust#143859)
Stabilized APIs
---------------
- [`u{n}::checked_sub_signed`]
(https://doc.rust-lang.org/stable/std/primitive.usize.html#method.checked_sub_signed)
- [`u{n}::overflowing_sub_signed`]
(https://doc.rust-lang.org/stable/std/primitive.usize.html#method.overflowing_sub_signed)
- [`u{n}::saturating_sub_signed`]
(https://doc.rust-lang.org/stable/std/primitive.usize.html#method.saturating_sub_signed)
- [`u{n}::wrapping_sub_signed`]
(https://doc.rust-lang.org/stable/std/primitive.usize.html#method.wrapping_sub_signed)
- [`impl Copy for IntErrorKind`]
(https://doc.rust-lang.org/stable/std/num/enum.IntErrorKind.html#impl-Copy-for-IntErrorKind)
- [`impl Hash for IntErrorKind`]
(https://doc.rust-lang.org/stable/std/num/enum.IntErrorKind.html#impl-Hash-for-IntErrorKind)
- [`impl PartialEq<&CStr> for CStr`]
(https://doc.rust-lang.org/stable/std/ffi/struct.CStr.html#impl-PartialEq%3C%26CStr%3E-for-CStr)
- [`impl PartialEq<CString> for CStr`]
(https://doc.rust-lang.org/stable/std/ffi/struct.CStr.html#impl-PartialEq%3CCString%3E-for-CStr)
- [`impl PartialEq<Cow<CStr>> for CStr`]
(https://doc.rust-lang.org/stable/std/ffi/struct.CStr.html#impl-PartialEq%3CCow%3C'_,+CStr%3E%3E-for-CStr)
- [`impl PartialEq<&CStr> for CString`]
(https://doc.rust-lang.org/stable/std/ffi/struct.CString.html#impl-PartialEq%3C%26CStr%3E-for-CString)
- [`impl PartialEq<CStr> for CString`]
(https://doc.rust-lang.org/stable/std/ffi/struct.CString.html#impl-PartialEq%3CCStr%3E-for-CString)
- [`impl PartialEq<Cow<CStr>> for CString`]
(https://doc.rust-lang.org/stable/std/ffi/struct.CString.html#impl-PartialEq%3CCow%3C'_,+CStr%3E%3E-for-CString)
- [`impl PartialEq<&CStr> for Cow<CStr>`]
(https://doc.rust-lang.org/stable/std/borrow/enum.Cow.html#impl-PartialEq%3C%26CStr%3E-for-Cow%3C'_,+CStr%3E)
- [`impl PartialEq<CStr> for Cow<CStr>`]
(https://doc.rust-lang.org/stable/std/borrow/enum.Cow.html#impl-PartialEq%3CCStr%3E-for-Cow%3C'_,+CStr%3E)
- [`impl PartialEq<CString> for Cow<CStr>`]
(https://doc.rust-lang.org/stable/std/borrow/enum.Cow.html#impl-PartialEq%3CCString%3E-for-Cow%3C'_,+CStr%3E)
These previously stable APIs are now stable in const contexts:
- [`<[T]>::reverse`]
(https://doc.rust-lang.org/stable/std/primitive.slice.html#method.reverse)
- [`f32::floor`]
(https://doc.rust-lang.org/stable/std/primitive.f32.html#method.floor)
- [`f32::ceil`]
(https://doc.rust-lang.org/stable/std/primitive.f32.html#method.ceil)
- [`f32::trunc`]
(https://doc.rust-lang.org/stable/std/primitive.f32.html#method.trunc)
- [`f32::fract`]
(https://doc.rust-lang.org/stable/std/primitive.f32.html#method.fract)
- [`f32::round`]
(https://doc.rust-lang.org/stable/std/primitive.f32.html#method.round)
- [`f32::round_ties_even`]
(https://doc.rust-lang.org/stable/std/primitive.f32.html#method.round_ties_even)
- [`f64::floor`]
(https://doc.rust-lang.org/stable/std/primitive.f64.html#method.floor)
- [`f64::ceil`]
(https://doc.rust-lang.org/stable/std/primitive.f64.html#method.ceil)
- [`f64::trunc`]
(https://doc.rust-lang.org/stable/std/primitive.f64.html#method.trunc)
- [`f64::fract`]
(https://doc.rust-lang.org/stable/std/primitive.f64.html#method.fract)
- [`f64::round`]
(https://doc.rust-lang.org/stable/std/primitive.f64.html#method.round)
- [`f64::round_ties_even`]
(https://doc.rust-lang.org/stable/std/primitive.f64.html#method.round_ties_even)
Cargo
-----
- [Add `http.proxy-cainfo` config for proxy certs]
(rust-lang/cargo#15374)
- [Use `gix` for `cargo package`]
(rust-lang/cargo#15534)
- [feat(publish): Stabilize multi-package publishing]
(rust-lang/cargo#15636)
Rustdoc
-----
- [Add ways to collapse all impl blocks]
(rust-lang/rust#141663). Previously the
"Summary" button and "-" keyboard shortcut would never collapse
`impl` blocks, now they do when shift is held
- [Display unsafe attributes with `unsafe()` wrappers]
(rust-lang/rust#143662)
Compatibility Notes
-------------------
- [Use `lld` by default on `x86_64-unknown-linux-gnu`]
(rust-lang/rust#140525).
See also <https://blog.rust-lang.org/2025/09/01/rust-lld-on-1.90.0-stable/>.
- [Make `core::iter::Fuse`'s `Default` impl construct `I::default()`
internally as promised in the docs instead of always being empty]
(rust-lang/rust#140985)
- [Set `MSG_NOSIGNAL` for `UnixStream`]
(rust-lang/rust#140005) This may change
program behavior but results in the same behavior as other
primitives (e.g., stdout, network sockets). Programs relying on
signals to terminate them should update handling of sockets to
handle errors on write by exiting.
- [On Unix `std::env::home_dir` will use the fallback if the `HOME`
environment variable is empty]
(rust-lang/rust#141840)
- We now [reject unsupported `extern "{abi}"`s consistently in all
positions] (rust-lang/rust#142134). This
primarily affects the use of implementing traits on an `extern
"{abi}"` function pointer, like `extern "stdcall" fn()`, on a
platform that doesn't support that, like aarch64-unknown-linux-gnu.
Direct usage of these unsupported ABI strings by declaring or
defining functions was already rejected, so this is only a change
for consistency.
- [const-eval: error when initializing a static writes to that static]
(rust-lang/rust#143084)
- [Check that the `proc_macro_derive` macro has correct arguments
when applied to the crate root]
(rust-lang/rust#143607)
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request Sep 24, 2025
This MR contains the following updates:
| Package | Update | Change |
|---|---|---|
| [rust](https://github.com/rust-lang/rust) | minor | `1.89.0` -> `1.90.0` |
MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot).
**Proposed changes to behavior should be submitted there as MRs.**
---
### Release Notes
<details>
<summary>rust-lang/rust (rust)</summary>
### [`v1.90.0`](https://github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1900-2025-09-18)
[Compare Source](rust-lang/rust@1.89.0...1.90.0)
\===========================
<a id="1.90-Language"></a>
## Language
- [Split up the `unknown_or_malformed_diagnostic_attributes` lint](rust-lang/rust#140717). This lint has been split up into four finer-grained lints, with `unknown_or_malformed_diagnostic_attributes` now being the lint group that contains these lints:
1. `unknown_diagnostic_attributes`: unknown to the current compiler
2. `misplaced_diagnostic_attributes`: placed on the wrong item
3. `malformed_diagnostic_attributes`: malformed attribute syntax or options
4. `malformed_diagnostic_format_literals`: malformed format string literal
- [Allow constants whose final value has references to mutable/external memory, but reject such constants as patterns](rust-lang/rust#140942)
- [Allow volatile access to non-Rust memory, including address 0](rust-lang/rust#141260)
<a id="1.90-Compiler"></a>
## Compiler
- [Use `lld` by default on `x86_64-unknown-linux-gnu`](rust-lang/rust#140525).
- [Tier 3 `musl` targets now link dynamically by default](rust-lang/rust#144410). Affected targets:
- `mips64-unknown-linux-muslabi64`
- `powerpc64-unknown-linux-musl`
- `powerpc-unknown-linux-musl`
- `powerpc-unknown-linux-muslspe`
- `riscv32gc-unknown-linux-musl`
- `s390x-unknown-linux-musl`
- `thumbv7neon-unknown-linux-musleabihf`
<a id="1.90-Platform-Support"></a>
## Platform Support
- [Demote `x86_64-apple-darwin` to Tier 2 with host tools](rust-lang/rust#145252)
Refer to Rust's [platform support page][platform-support-doc]
for more information on Rust's tiered platform support.
[platform-support-doc]: https://doc.rust-lang.org/rustc/platform-support.html
<a id="1.90-Libraries"></a>
## Libraries
- [Stabilize `u*::{checked,overflowing,saturating,wrapping}_sub_signed`](rust-lang/rust#126043)
- [Allow comparisons between `CStr`, `CString`, and `Cow<CStr>`](rust-lang/rust#137268)
- [Remove some unsized tuple impls since unsized tuples can't be constructed](rust-lang/rust#138340)
- [Set `MSG_NOSIGNAL` for `UnixStream`](rust-lang/rust#140005)
- [`proc_macro::Ident::new` now supports `$crate`.](rust-lang/rust#141996)
- [Guarantee the pointer returned from `Thread::into_raw` has at least 8 bytes of alignment](rust-lang/rust#143859)
<a id="1.90-Stabilized-APIs"></a>
## Stabilized APIs
- [`u{n}::checked_sub_signed`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.checked_sub_signed)
- [`u{n}::overflowing_sub_signed`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.overflowing_sub_signed)
- [`u{n}::saturating_sub_signed`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.saturating_sub_signed)
- [`u{n}::wrapping_sub_signed`](https://doc.rust-lang.org/stable/std/primitive.usize.html#method.wrapping_sub_signed)
- [`impl Copy for IntErrorKind`](https://doc.rust-lang.org/stable/std/num/enum.IntErrorKind.html#impl-Copy-for-IntErrorKind)
- [`impl Hash for IntErrorKind`](https://doc.rust-lang.org/stable/std/num/enum.IntErrorKind.html#impl-Hash-for-IntErrorKind)
- [`impl PartialEq<&CStr> for CStr`](https://doc.rust-lang.org/stable/std/ffi/struct.CStr.html#impl-PartialEq%3C%26CStr%3E-for-CStr)
- [`impl PartialEq<CString> for CStr`](https://doc.rust-lang.org/stable/std/ffi/struct.CStr.html#impl-PartialEq%3CCString%3E-for-CStr)
- [`impl PartialEq<Cow<CStr>> for CStr`](https://doc.rust-lang.org/stable/std/ffi/struct.CStr.html#impl-PartialEq%3CCow%3C'_,+CStr%3E%3E-for-CStr)
- [`impl PartialEq<&CStr> for CString`](https://doc.rust-lang.org/stable/std/ffi/struct.CString.html#impl-PartialEq%3C%26CStr%3E-for-CString)
- [`impl PartialEq<CStr> for CString`](https://doc.rust-lang.org/stable/std/ffi/struct.CString.html#impl-PartialEq%3CCStr%3E-for-CString)
- [`impl PartialEq<Cow<CStr>> for CString`](https://doc.rust-lang.org/stable/std/ffi/struct.CString.html#impl-PartialEq%3CCow%3C'_,+CStr%3E%3E-for-CString)
- [`impl PartialEq<&CStr> for Cow<CStr>`](https://doc.rust-lang.org/stable/std/borrow/enum.Cow.html#impl-PartialEq%3C%26CStr%3E-for-Cow%3C'_,+CStr%3E)
- [`impl PartialEq<CStr> for Cow<CStr>`](https://doc.rust-lang.org/stable/std/borrow/enum.Cow.html#impl-PartialEq%3CCStr%3E-for-Cow%3C'_,+CStr%3E)
- [`impl PartialEq<CString> for Cow<CStr>`](https://doc.rust-lang.org/stable/std/borrow/enum.Cow.html#impl-PartialEq%3CCString%3E-for-Cow%3C'_,+CStr%3E)
These previously stable APIs are now stable in const contexts:
- [`<[T]>::reverse`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.reverse)
- [`f32::floor`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.floor)
- [`f32::ceil`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.ceil)
- [`f32::trunc`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.trunc)
- [`f32::fract`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.fract)
- [`f32::round`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.round)
- [`f32::round_ties_even`](https://doc.rust-lang.org/stable/std/primitive.f32.html#method.round_ties_even)
- [`f64::floor`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.floor)
- [`f64::ceil`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.ceil)
- [`f64::trunc`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.trunc)
- [`f64::fract`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.fract)
- [`f64::round`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.round)
- [`f64::round_ties_even`](https://doc.rust-lang.org/stable/std/primitive.f64.html#method.round_ties_even)
<a id="1.90-Cargo"></a>
## Cargo
- [Add `http.proxy-cainfo` config for proxy certs](rust-lang/cargo#15374)
- [Use `gix` for `cargo package`](rust-lang/cargo#15534)
- [feat(publish): Stabilize multi-package publishing](rust-lang/cargo#15636)
<a id="1.90-Rustdoc"></a>
## Rustdoc
- [Add ways to collapse all impl blocks](rust-lang/rust#141663). Previously the "Summary" button and "-" keyboard shortcut would never collapse `impl` blocks, now they do when shift is held
- [Display unsafe attributes with `unsafe()` wrappers](rust-lang/rust#143662)
<a id="1.90-Compatibility-Notes"></a>
## Compatibility Notes
- [Use `lld` by default on `x86_64-unknown-linux-gnu`](rust-lang/rust#140525).
See also <https://blog.rust-lang.org/2025/09/01/rust-lld-on-1.90.0-stable/>.
- [Make `core::iter::Fuse`'s `Default` impl construct `I::default()` internally as promised in the docs instead of always being empty](rust-lang/rust#140985)
- [Set `MSG_NOSIGNAL` for `UnixStream`](rust-lang/rust#140005)
This may change program behavior but results in the same behavior as other primitives (e.g., stdout, network sockets).
Programs relying on signals to terminate them should update handling of sockets to handle errors on write by exiting.
- [On Unix `std::env::home_dir` will use the fallback if the `HOME` environment variable is empty](rust-lang/rust#141840)
- We now [reject unsupported `extern "{abi}"`s consistently in all positions](rust-lang/rust#142134). This primarily affects the use of implementing traits on an `extern "{abi}"` function pointer, like `extern "stdcall" fn()`, on a platform that doesn't support that, like aarch64-unknown-linux-gnu. Direct usage of these unsupported ABI strings by declaring or defining functions was already rejected, so this is only a change for consistency.
- [const-eval: error when initializing a static writes to that static](rust-lang/rust#143084)
- [Check that the `proc_macro_derive` macro has correct arguments when applied to the crate root](rust-lang/rust#143607)
</details>
---
### Configuration
📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined).
🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied.
♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 **Ignore**: Close this MR and you won't be reminded about this update again.
---
- [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box
---
This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0MS4xMTYuNiIsInVwZGF0ZWRJblZlciI6IjQxLjExNi42IiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJSZW5vdmF0ZSBCb3QiXX0=-->
ellie added a commit to atuinsh/desktop that referenced this pull request Sep 29, 2025
This platform now has tier 2 support from the Rust project, and is no
longer properly tested. It's also very slow to build for.
See: rust-lang/rust#145252
@madsmtmmadsmtm added the O-macos Operating system: macOS label Sep 30, 2025
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request Oct 18, 2025
Pkgsrc changes:
* Disable the build of NetBSD-*aarch64eb, since it now fails both
to cross-build and to build natively.
Ref. rust-lang/rust#146842
* Adjusted patches, checksum updates etc.
Upstream changes:
Version 1.90 (2025-09-18)
==========================
Language
--------
- [Split up the `unknown_or_malformed_diagnostic_attributes` lint]
(rust-lang/rust#140717). This lint has
been split up into four finer-grained lints, with
`unknown_or_malformed_diagnostic_attributes` now being the lint
group that contains these lints:
1. `unknown_diagnostic_attributes`: unknown to the current compiler
2. `misplaced_diagnostic_attributes`: placed on the wrong item
3. `malformed_diagnostic_attributes`: malformed attribute syntax or options
4. `malformed_diagnostic_format_literals`: malformed format string literal
- [Allow constants whose final value has references to mutable/external
memory, but reject such constants as patterns]
(rust-lang/rust#140942)
- [Allow volatile access to non-Rust memory, including address 0]
(rust-lang/rust#141260)
Compiler
--------
- [Use `lld` by default on `x86_64-unknown-linux-gnu`]
(rust-lang/rust#140525).
- [Tier 3 `musl` targets now link dynamically by default]
(rust-lang/rust#144410). Affected targets:
- `mips64-unknown-linux-muslabi64`
- `powerpc64-unknown-linux-musl`
- `powerpc-unknown-linux-musl`
- `powerpc-unknown-linux-muslspe`
- `riscv32gc-unknown-linux-musl`
- `s390x-unknown-linux-musl`
- `thumbv7neon-unknown-linux-musleabihf`
Platform Support
----------------
- [Demote `x86_64-apple-darwin` to Tier 2 with host tools]
(rust-lang/rust#145252)
Refer to Rust's [platform support page][platform-support-doc]
for more information on Rust's tiered platform support.
[platform-support-doc]: https://doc.rust-lang.org/rustc/platform-support.html
Libraries
---------
- [Stabilize `u*::{checked,overflowing,saturating,wrapping}_sub_signed`]
(rust-lang/rust#126043)
- [Allow comparisons between `CStr`, `CString`, and `Cow<CStr>`]
(rust-lang/rust#137268)
- [Remove some unsized tuple impls since unsized tuples can't be constructed]
(rust-lang/rust#138340)
- [Set `MSG_NOSIGNAL` for `UnixStream`]
(rust-lang/rust#140005)
- [`proc_macro::Ident::new` now supports `$crate`.]
(rust-lang/rust#141996)
- [Guarantee the pointer returned from `Thread::into_raw` has at
least 8 bytes of alignment]
(rust-lang/rust#143859)
Stabilized APIs
---------------
- [`u{n}::checked_sub_signed`]
(https://doc.rust-lang.org/stable/std/primitive.usize.html#method.checked_sub_signed)
- [`u{n}::overflowing_sub_signed`]
(https://doc.rust-lang.org/stable/std/primitive.usize.html#method.overflowing_sub_signed)
- [`u{n}::saturating_sub_signed`]
(https://doc.rust-lang.org/stable/std/primitive.usize.html#method.saturating_sub_signed)
- [`u{n}::wrapping_sub_signed`]
(https://doc.rust-lang.org/stable/std/primitive.usize.html#method.wrapping_sub_signed)
- [`impl Copy for IntErrorKind`]
(https://doc.rust-lang.org/stable/std/num/enum.IntErrorKind.html#impl-Copy-for-IntErrorKind)
- [`impl Hash for IntErrorKind`]
(https://doc.rust-lang.org/stable/std/num/enum.IntErrorKind.html#impl-Hash-for-IntErrorKind)
- [`impl PartialEq<&CStr> for CStr`]
(https://doc.rust-lang.org/stable/std/ffi/struct.CStr.html#impl-PartialEq%3C%26CStr%3E-for-CStr)
- [`impl PartialEq<CString> for CStr`]
(https://doc.rust-lang.org/stable/std/ffi/struct.CStr.html#impl-PartialEq%3CCString%3E-for-CStr)
- [`impl PartialEq<Cow<CStr>> for CStr`]
(https://doc.rust-lang.org/stable/std/ffi/struct.CStr.html#impl-PartialEq%3CCow%3C'_,+CStr%3E%3E-for-CStr)
- [`impl PartialEq<&CStr> for CString`]
(https://doc.rust-lang.org/stable/std/ffi/struct.CString.html#impl-PartialEq%3C%26CStr%3E-for-CString)
- [`impl PartialEq<CStr> for CString`]
(https://doc.rust-lang.org/stable/std/ffi/struct.CString.html#impl-PartialEq%3CCStr%3E-for-CString)
- [`impl PartialEq<Cow<CStr>> for CString`]
(https://doc.rust-lang.org/stable/std/ffi/struct.CString.html#impl-PartialEq%3CCow%3C'_,+CStr%3E%3E-for-CString)
- [`impl PartialEq<&CStr> for Cow<CStr>`]
(https://doc.rust-lang.org/stable/std/borrow/enum.Cow.html#impl-PartialEq%3C%26CStr%3E-for-Cow%3C'_,+CStr%3E)
- [`impl PartialEq<CStr> for Cow<CStr>`]
(https://doc.rust-lang.org/stable/std/borrow/enum.Cow.html#impl-PartialEq%3CCStr%3E-for-Cow%3C'_,+CStr%3E)
- [`impl PartialEq<CString> for Cow<CStr>`]
(https://doc.rust-lang.org/stable/std/borrow/enum.Cow.html#impl-PartialEq%3CCString%3E-for-Cow%3C'_,+CStr%3E)
These previously stable APIs are now stable in const contexts:
- [`<[T]>::reverse`]
(https://doc.rust-lang.org/stable/std/primitive.slice.html#method.reverse)
- [`f32::floor`]
(https://doc.rust-lang.org/stable/std/primitive.f32.html#method.floor)
- [`f32::ceil`]
(https://doc.rust-lang.org/stable/std/primitive.f32.html#method.ceil)
- [`f32::trunc`]
(https://doc.rust-lang.org/stable/std/primitive.f32.html#method.trunc)
- [`f32::fract`]
(https://doc.rust-lang.org/stable/std/primitive.f32.html#method.fract)
(https://doc.rust-lang.org/stable/std/primitive.f32.html#method.fract)
- [`f32::round`]
(https://doc.rust-lang.org/stable/std/primitive.f32.html#method.round)
- [`f32::round_ties_even`]
(https://doc.rust-lang.org/stable/std/primitive.f32.html#method.round_ties_even)
- [`f64::floor`]
(https://doc.rust-lang.org/stable/std/primitive.f64.html#method.floor)
- [`f64::ceil`]
(https://doc.rust-lang.org/stable/std/primitive.f64.html#method.ceil)
- [`f64::trunc`]
(https://doc.rust-lang.org/stable/std/primitive.f64.html#method.trunc)
- [`f64::fract`]
(https://doc.rust-lang.org/stable/std/primitive.f64.html#method.fract)
- [`f64::round`]
(https://doc.rust-lang.org/stable/std/primitive.f64.html#method.round)
- [`f64::round_ties_even`]
(https://doc.rust-lang.org/stable/std/primitive.f64.html#method.round_ties_even)
Cargo
-----
- [Add `http.proxy-cainfo` config for proxy certs]
(rust-lang/cargo#15374)
- [Use `gix` for `cargo package`]
(rust-lang/cargo#15534)
- [feat(publish): Stabilize multi-package publishing]
(rust-lang/cargo#15636)
Rustdoc
-----
- [Add ways to collapse all impl blocks]
(rust-lang/rust#141663). Previously the
"Summary" button and "-" keyboard shortcut would never collapse
`impl` blocks, now they do when shift is held
- [Display unsafe attributes with `unsafe()` wrappers]
(rust-lang/rust#143662)
Compatibility Notes
-------------------
- [Use `lld` by default on `x86_64-unknown-linux-gnu`]
(rust-lang/rust#140525).
See also <https://blog.rust-lang.org/2025/09/01/rust-lld-on-1.90.0-stable/>.
- [Make `core::iter::Fuse`'s `Default` impl construct `I::default()`
internally as promised in the docs instead of always being empty]
(rust-lang/rust#140985)
- [Set `MSG_NOSIGNAL` for `UnixStream`]
(rust-lang/rust#140005) This may change
program behavior but results in the same behavior as other
primitives (e.g., stdout, network sockets). Programs relying on
signals to terminate them should update handling of sockets to
handle errors on write by exiting.
- [On Unix `std::env::home_dir` will use the fallback if the `HOME`
environment variable is empty]
(rust-lang/rust#141840)
- We now [reject unsupported `extern "{abi}"`s consistently in all
positions] (rust-lang/rust#142134). This
primarily affects the use of implementing traits on an `extern
"{abi}"` function pointer, like `extern "stdcall" fn()`, on a
platform that doesn't support that, like aarch64-unknown-linux-gnu.
Direct usage of these unsupported ABI strings by declaring or
defining functions was already rejected, so this is only a change
for consistency.
- [const-eval: error when initializing a static writes to that static]
(rust-lang/rust#143084)
- [Check that the `proc_macro_derive` macro has correct arguments
when applied to the crate root]
(rust-lang/rust#143607)
Version 1.89.0 (2025-08-07)
==========================
Language
--------
- [Stabilize explicitly inferred const arguments (`feature(generic_arg_infer)`)]
(rust-lang/rust#141610)
- [Add a warn-by-default `mismatched_lifetime_syntaxes` lint.]
(rust-lang/rust#138677)
This lint detects when the same lifetime is referred to by
different syntax categories between function arguments and return
values, which can be confusing to read, especially in unsafe
code. This lint supersedes the warn-by-default `elided_named_lifetimes`
lint.
- [Expand `unpredictable_function_pointer_comparisons` to also lint
on function pointer comparisons in external macros]
(rust-lang/rust#134536)
- [Make the `dangerous_implicit_autorefs` lint deny-by-default]
(rust-lang/rust#141661)
- [Stabilize the avx512 target features]
(rust-lang/rust#138940)
- [Stabilize `kl` and `widekl` target features for x86]
(rust-lang/rust#140766)
- [Stabilize `sha512`, `sm3` and `sm4` target features for x86]
(rust-lang/rust#140767)
- [Stabilize LoongArch target features `f`, `d`, `frecipe`, `lasx`,
`lbt`, `lsx`, and `lvz`]
(rust-lang/rust#135015)
- [Remove `i128` and `u128` from `improper_ctypes_definitions`]
(rust-lang/rust#137306)
- [Stabilize `repr128` (`#[repr(u128)]`, `#[repr(i128)]`)]
(rust-lang/rust#138285)
- [Allow `#![doc(test(attr(..)))]` everywhere]
(rust-lang/rust#140560)
- [Extend temporary lifetime extension to also go through tuple
struct and tuple variant constructors]
(rust-lang/rust#140593)
Compiler
--------
- [Default to non-leaf frame pointers on aarch64-linux]
(rust-lang/rust#140832)
- [Enable non-leaf frame pointers for Arm64EC Windows]
(rust-lang/rust#140862)
- [Set Apple frame pointers by architecture]
(rust-lang/rust#141797)
Platform Support
----------------
- [Add new Tier-3 targets `loongarch32-unknown-none` and
`loongarch32-unknown-none-softfloat`]
(rust-lang/rust#142053)
Refer to Rust's [platform support page][platform-support-doc]
for more information on Rust's tiered platform support.
[platform-support-doc]: https://doc.rust-lang.org/rustc/platform-support.html
Libraries
---------
- [Specify the base path for `file!`]
(rust-lang/rust#134442)
- [Allow storing `format_args!()` in a variable]
(rust-lang/rust#140748)
- [Add `#[must_use]` to `[T; N]::map`]
(rust-lang/rust#140957)
- [Implement `DerefMut` for `Lazy{Cell,Lock}`]
(rust-lang/rust#129334)
- [Implement `Default` for `array::IntoIter`]
(rust-lang/rust#141574)
- [Implement `Clone` for `slice::ChunkBy`]
(rust-lang/rust#138016)
- [Implement `io::Seek` for `io::Take`]
(rust-lang/rust#138023)
Stabilized APIs
---------------
- [`NonZero<char>`]
(https://doc.rust-lang.org/stable/std/num/struct.NonZero.html)
- Many intrinsics for x86, not enumerated here
- [AVX512 intrinsics](rust-lang/rust#111137)
- [`SHA512`, `SM3` and `SM4` intrinsics]
(rust-lang/rust#126624)
- [`File::lock`]
(https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.lock)
- [`File::lock_shared`]
(https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.lock_shared)
- [`File::try_lock`]
(https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.try_lock)
- [`File::try_lock_shared`]
(https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.try_lock_shared)
- [`File::unlock`]
(https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.unlock)
- [`NonNull::from_ref`]
(https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.from_ref)
- [`NonNull::from_mut`]
(https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.from_mut)
- [`NonNull::without_provenance`]
(https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.without_provenance)
- [`NonNull::with_exposed_provenance`]
(https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.with_exposed_provenance)
- [`NonNull::expose_provenance`]
(https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.expose_provenance)
- [`OsString::leak`]
(https://doc.rust-lang.org/stable/std/ffi/struct.OsString.html#method.leak)
- [`PathBuf::leak`]
(https://doc.rust-lang.org/stable/std/path/struct.PathBuf.html#method.leak)
- [`Result::flatten`]
(https://doc.rust-lang.org/stable/std/result/enum.Result.html#method.flatten)
- [`std::os::linux::net::TcpStreamExt::quickack`]
(https://doc.rust-lang.org/stable/std/os/linux/net/trait.TcpStreamExt.html#tymethod.quickack)
- [`std::os::linux::net::TcpStreamExt::set_quickack`]
(https://doc.rust-lang.org/stable/std/os/linux/net/trait.TcpStreamExt.html#tymethod.set_quickack)
These previously stable APIs are now stable in const contexts:
- [`<[T; N]>::as_mut_slice`]
(https://doc.rust-lang.org/stable/std/primitive.array.html#method.as_mut_slice)
- [`<[u8]>::eq_ignore_ascii_case`]
(https://doc.rust-lang.org/stable/std/primitive.slice.html#impl-%5Bu8%5D/method.eq_ignore_ascii_case)
- [`str::eq_ignore_ascii_case`]
(https://doc.rust-lang.org/stable/std/primitive.str.html#impl-str/method.eq_ignore_ascii_case)
Cargo
-----
- [`cargo fix` and `cargo clippy --fix` now default to the same
Cargo target selection as other build commands.]
(rust-lang/cargo#15192) Previously it
would apply to all targets (like binaries, examples, tests, etc.).
The `--edition` flag still applies to all targets.
- [Stabilize doctest-xcompile.]
(rust-lang/cargo#15462) Doctests are
now tested when cross-compiling. Just like other tests, it will
use the [`runner` setting]
(https://doc.rust-lang.org/cargo/reference/config.html#targettriplerunner)
to run the tests. If you need to disable tests for a target, you
can use the [ignore doctest attribute]
(https://doc.rust-lang.org/rustdoc/write-documentation/documentation-tests.html#ignoring-targets)
to specify the targets to ignore.
Rustdoc
-----
- [On mobile, make the sidebar full width and linewrap]
(rust-lang/rust#139831). This makes long
section and item names much easier to deal with on mobile.
Compatibility Notes
-------------------
- [Make `missing_fragment_specifier` an unconditional error]
(rust-lang/rust#128425)
- [Enabling the `neon` target feature on `aarch64-unknown-none-softfloat`
causes a warning]
(rust-lang/rust#135160) because mixing
code with and without that target feature is not properly supported
by LLVM
- [Sized Hierarchy: Part I](rust-lang/rust#137944)
- Introduces a small breaking change affecting `?Sized` bounds
on impls on recursive types which contain associated type
projections. It is not expected to affect any existing published
crates. Can be fixed by refactoring the involved types or opting
into the `sized_hierarchy` unstable feature. See the [FCP report]
(rust-lang/rust#137944 (comment))
for a code example.
- The warn-by-default `elided_named_lifetimes` lint is [superseded
by the warn-by-default `mismatched_lifetime_syntaxes` lint.]
(rust-lang/rust#138677)
- [Error on recursive opaque types earlier in the type checker]
(rust-lang/rust#139419)
- [Type inference side effects from requiring element types of
array repeat expressions are `Copy` are now only available at the
end of type checking]
(rust-lang/rust#139635)
- [The deprecated accidentally-stable
`std::intrinsics::{copy,copy_nonoverlapping,write_bytes}` are now
proper intrinsics]
(rust-lang/rust#139916). There are no
debug assertions guarding against UB, and they cannot be coerced
to function pointers.
- [Remove long-deprecated `std::intrinsics::drop_in_place`]
(rust-lang/rust#140151)
- [Make well-formedness predicates no longer coinductive]
(rust-lang/rust#140208)
- [Remove hack when checking impl method compatibility]
(rust-lang/rust#140557)
- [Remove unnecessary type inference due to built-in trait object impls]
(rust-lang/rust#141352)
- [Lint against "stdcall", "fastcall", and "cdecl" on non-x86-32 targets]
(rust-lang/rust#141435)
- [Future incompatibility warnings relating to the never type (`!`)
are now reported in dependencies]
(rust-lang/rust#141937)
- [Ensure `std::ptr::copy_*` intrinsics also perform the static
self-init checks]
(rust-lang/rust#142575)
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.
- [Correctly un-remap compiler sources paths with the `rustc-dev` component]
(rust-lang/rust#142377)
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request Oct 23, 2025
Pkgsrc changes:
* Disable the build of NetBSD-*aarch64eb, since it now fails both
to cross-build and to build natively.
Ref. rust-lang/rust#146842
* Adjusted patches, checksum updates etc.
Upstream changes:
Version 1.90 (2025-09-18)
==========================
Language
--------
- [Split up the `unknown_or_malformed_diagnostic_attributes` lint]
(rust-lang/rust#140717). This lint has
been split up into four finer-grained lints, with
`unknown_or_malformed_diagnostic_attributes` now being the lint
group that contains these lints:
1. `unknown_diagnostic_attributes`: unknown to the current compiler
2. `misplaced_diagnostic_attributes`: placed on the wrong item
3. `malformed_diagnostic_attributes`: malformed attribute syntax or options
4. `malformed_diagnostic_format_literals`: malformed format string literal
- [Allow constants whose final value has references to mutable/external
memory, but reject such constants as patterns]
(rust-lang/rust#140942)
- [Allow volatile access to non-Rust memory, including address 0]
(rust-lang/rust#141260)
Compiler
--------
- [Use `lld` by default on `x86_64-unknown-linux-gnu`]
(rust-lang/rust#140525).
- [Tier 3 `musl` targets now link dynamically by default]
(rust-lang/rust#144410). Affected targets:
- `mips64-unknown-linux-muslabi64`
- `powerpc64-unknown-linux-musl`
- `powerpc-unknown-linux-musl`
- `powerpc-unknown-linux-muslspe`
- `riscv32gc-unknown-linux-musl`
- `s390x-unknown-linux-musl`
- `thumbv7neon-unknown-linux-musleabihf`
Platform Support
----------------
- [Demote `x86_64-apple-darwin` to Tier 2 with host tools]
(rust-lang/rust#145252)
Refer to Rust's [platform support page][platform-support-doc]
for more information on Rust's tiered platform support.
[platform-support-doc]: https://doc.rust-lang.org/rustc/platform-support.html
Libraries
---------
- [Stabilize `u*::{checked,overflowing,saturating,wrapping}_sub_signed`]
(rust-lang/rust#126043)
- [Allow comparisons between `CStr`, `CString`, and `Cow<CStr>`]
(rust-lang/rust#137268)
- [Remove some unsized tuple impls since unsized tuples can't be constructed]
(rust-lang/rust#138340)
- [Set `MSG_NOSIGNAL` for `UnixStream`]
(rust-lang/rust#140005)
- [`proc_macro::Ident::new` now supports `$crate`.]
(rust-lang/rust#141996)
- [Guarantee the pointer returned from `Thread::into_raw` has at
least 8 bytes of alignment]
(rust-lang/rust#143859)
Stabilized APIs
---------------
- [`u{n}::checked_sub_signed`]
(https://doc.rust-lang.org/stable/std/primitive.usize.html#method.checked_sub_signed)
- [`u{n}::overflowing_sub_signed`]
(https://doc.rust-lang.org/stable/std/primitive.usize.html#method.overflowing_sub_signed)
- [`u{n}::saturating_sub_signed`]
(https://doc.rust-lang.org/stable/std/primitive.usize.html#method.saturating_sub_signed)
- [`u{n}::wrapping_sub_signed`]
(https://doc.rust-lang.org/stable/std/primitive.usize.html#method.wrapping_sub_signed)
- [`impl Copy for IntErrorKind`]
(https://doc.rust-lang.org/stable/std/num/enum.IntErrorKind.html#impl-Copy-for-IntErrorKind)
- [`impl Hash for IntErrorKind`]
(https://doc.rust-lang.org/stable/std/num/enum.IntErrorKind.html#impl-Hash-for-IntErrorKind)
- [`impl PartialEq<&CStr> for CStr`]
(https://doc.rust-lang.org/stable/std/ffi/struct.CStr.html#impl-PartialEq%3C%26CStr%3E-for-CStr)
- [`impl PartialEq<CString> for CStr`]
(https://doc.rust-lang.org/stable/std/ffi/struct.CStr.html#impl-PartialEq%3CCString%3E-for-CStr)
- [`impl PartialEq<Cow<CStr>> for CStr`]
(https://doc.rust-lang.org/stable/std/ffi/struct.CStr.html#impl-PartialEq%3CCow%3C'_,+CStr%3E%3E-for-CStr)
- [`impl PartialEq<&CStr> for CString`]
(https://doc.rust-lang.org/stable/std/ffi/struct.CString.html#impl-PartialEq%3C%26CStr%3E-for-CString)
- [`impl PartialEq<CStr> for CString`]
(https://doc.rust-lang.org/stable/std/ffi/struct.CString.html#impl-PartialEq%3CCStr%3E-for-CString)
- [`impl PartialEq<Cow<CStr>> for CString`]
(https://doc.rust-lang.org/stable/std/ffi/struct.CString.html#impl-PartialEq%3CCow%3C'_,+CStr%3E%3E-for-CString)
- [`impl PartialEq<&CStr> for Cow<CStr>`]
(https://doc.rust-lang.org/stable/std/borrow/enum.Cow.html#impl-PartialEq%3C%26CStr%3E-for-Cow%3C'_,+CStr%3E)
- [`impl PartialEq<CStr> for Cow<CStr>`]
(https://doc.rust-lang.org/stable/std/borrow/enum.Cow.html#impl-PartialEq%3CCStr%3E-for-Cow%3C'_,+CStr%3E)
- [`impl PartialEq<CString> for Cow<CStr>`]
(https://doc.rust-lang.org/stable/std/borrow/enum.Cow.html#impl-PartialEq%3CCString%3E-for-Cow%3C'_,+CStr%3E)
These previously stable APIs are now stable in const contexts:
- [`<[T]>::reverse`]
(https://doc.rust-lang.org/stable/std/primitive.slice.html#method.reverse)
- [`f32::floor`]
(https://doc.rust-lang.org/stable/std/primitive.f32.html#method.floor)
- [`f32::ceil`]
(https://doc.rust-lang.org/stable/std/primitive.f32.html#method.ceil)
- [`f32::trunc`]
(https://doc.rust-lang.org/stable/std/primitive.f32.html#method.trunc)
- [`f32::fract`]
(https://doc.rust-lang.org/stable/std/primitive.f32.html#method.fract)
(https://doc.rust-lang.org/stable/std/primitive.f32.html#method.fract)
- [`f32::round`]
(https://doc.rust-lang.org/stable/std/primitive.f32.html#method.round)
- [`f32::round_ties_even`]
(https://doc.rust-lang.org/stable/std/primitive.f32.html#method.round_ties_even)
- [`f64::floor`]
(https://doc.rust-lang.org/stable/std/primitive.f64.html#method.floor)
- [`f64::ceil`]
(https://doc.rust-lang.org/stable/std/primitive.f64.html#method.ceil)
- [`f64::trunc`]
(https://doc.rust-lang.org/stable/std/primitive.f64.html#method.trunc)
- [`f64::fract`]
(https://doc.rust-lang.org/stable/std/primitive.f64.html#method.fract)
- [`f64::round`]
(https://doc.rust-lang.org/stable/std/primitive.f64.html#method.round)
- [`f64::round_ties_even`]
(https://doc.rust-lang.org/stable/std/primitive.f64.html#method.round_ties_even)
Cargo
-----
- [Add `http.proxy-cainfo` config for proxy certs]
(rust-lang/cargo#15374)
- [Use `gix` for `cargo package`]
(rust-lang/cargo#15534)
- [feat(publish): Stabilize multi-package publishing]
(rust-lang/cargo#15636)
Rustdoc
-----
- [Add ways to collapse all impl blocks]
(rust-lang/rust#141663). Previously the
"Summary" button and "-" keyboard shortcut would never collapse
`impl` blocks, now they do when shift is held
- [Display unsafe attributes with `unsafe()` wrappers]
(rust-lang/rust#143662)
Compatibility Notes
-------------------
- [Use `lld` by default on `x86_64-unknown-linux-gnu`]
(rust-lang/rust#140525).
See also <https://blog.rust-lang.org/2025/09/01/rust-lld-on-1.90.0-stable/>.
- [Make `core::iter::Fuse`'s `Default` impl construct `I::default()`
internally as promised in the docs instead of always being empty]
(rust-lang/rust#140985)
- [Set `MSG_NOSIGNAL` for `UnixStream`]
(rust-lang/rust#140005) This may change
program behavior but results in the same behavior as other
primitives (e.g., stdout, network sockets). Programs relying on
signals to terminate them should update handling of sockets to
handle errors on write by exiting.
- [On Unix `std::env::home_dir` will use the fallback if the `HOME`
environment variable is empty]
(rust-lang/rust#141840)
- We now [reject unsupported `extern "{abi}"`s consistently in all
positions] (rust-lang/rust#142134). This
primarily affects the use of implementing traits on an `extern
"{abi}"` function pointer, like `extern "stdcall" fn()`, on a
platform that doesn't support that, like aarch64-unknown-linux-gnu.
Direct usage of these unsupported ABI strings by declaring or
defining functions was already rejected, so this is only a change
for consistency.
- [const-eval: error when initializing a static writes to that static]
(rust-lang/rust#143084)
- [Check that the `proc_macro_derive` macro has correct arguments
when applied to the crate root]
(rust-lang/rust#143607)
Version 1.89.0 (2025-08-07)
==========================
Language
--------
- [Stabilize explicitly inferred const arguments (`feature(generic_arg_infer)`)]
(rust-lang/rust#141610)
- [Add a warn-by-default `mismatched_lifetime_syntaxes` lint.]
(rust-lang/rust#138677)
This lint detects when the same lifetime is referred to by
different syntax categories between function arguments and return
values, which can be confusing to read, especially in unsafe
code. This lint supersedes the warn-by-default `elided_named_lifetimes`
lint.
- [Expand `unpredictable_function_pointer_comparisons` to also lint
on function pointer comparisons in external macros]
(rust-lang/rust#134536)
- [Make the `dangerous_implicit_autorefs` lint deny-by-default]
(rust-lang/rust#141661)
- [Stabilize the avx512 target features]
(rust-lang/rust#138940)
- [Stabilize `kl` and `widekl` target features for x86]
(rust-lang/rust#140766)
- [Stabilize `sha512`, `sm3` and `sm4` target features for x86]
(rust-lang/rust#140767)
- [Stabilize LoongArch target features `f`, `d`, `frecipe`, `lasx`,
`lbt`, `lsx`, and `lvz`]
(rust-lang/rust#135015)
- [Remove `i128` and `u128` from `improper_ctypes_definitions`]
(rust-lang/rust#137306)
- [Stabilize `repr128` (`#[repr(u128)]`, `#[repr(i128)]`)]
(rust-lang/rust#138285)
- [Allow `#![doc(test(attr(..)))]` everywhere]
(rust-lang/rust#140560)
- [Extend temporary lifetime extension to also go through tuple
struct and tuple variant constructors]
(rust-lang/rust#140593)
Compiler
--------
- [Default to non-leaf frame pointers on aarch64-linux]
(rust-lang/rust#140832)
- [Enable non-leaf frame pointers for Arm64EC Windows]
(rust-lang/rust#140862)
- [Set Apple frame pointers by architecture]
(rust-lang/rust#141797)
Platform Support
----------------
- [Add new Tier-3 targets `loongarch32-unknown-none` and
`loongarch32-unknown-none-softfloat`]
(rust-lang/rust#142053)
Refer to Rust's [platform support page][platform-support-doc]
for more information on Rust's tiered platform support.
[platform-support-doc]: https://doc.rust-lang.org/rustc/platform-support.html
Libraries
---------
- [Specify the base path for `file!`]
(rust-lang/rust#134442)
- [Allow storing `format_args!()` in a variable]
(rust-lang/rust#140748)
- [Add `#[must_use]` to `[T; N]::map`]
(rust-lang/rust#140957)
- [Implement `DerefMut` for `Lazy{Cell,Lock}`]
(rust-lang/rust#129334)
- [Implement `Default` for `array::IntoIter`]
(rust-lang/rust#141574)
- [Implement `Clone` for `slice::ChunkBy`]
(rust-lang/rust#138016)
- [Implement `io::Seek` for `io::Take`]
(rust-lang/rust#138023)
Stabilized APIs
---------------
- [`NonZero<char>`]
(https://doc.rust-lang.org/stable/std/num/struct.NonZero.html)
- Many intrinsics for x86, not enumerated here
- [AVX512 intrinsics](rust-lang/rust#111137)
- [`SHA512`, `SM3` and `SM4` intrinsics]
(rust-lang/rust#126624)
- [`File::lock`]
(https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.lock)
- [`File::lock_shared`]
(https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.lock_shared)
- [`File::try_lock`]
(https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.try_lock)
- [`File::try_lock_shared`]
(https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.try_lock_shared)
- [`File::unlock`]
(https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.unlock)
- [`NonNull::from_ref`]
(https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.from_ref)
- [`NonNull::from_mut`]
(https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.from_mut)
- [`NonNull::without_provenance`]
(https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.without_provenance)
- [`NonNull::with_exposed_provenance`]
(https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.with_exposed_provenance)
- [`NonNull::expose_provenance`]
(https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.expose_provenance)
- [`OsString::leak`]
(https://doc.rust-lang.org/stable/std/ffi/struct.OsString.html#method.leak)
- [`PathBuf::leak`]
(https://doc.rust-lang.org/stable/std/path/struct.PathBuf.html#method.leak)
- [`Result::flatten`]
(https://doc.rust-lang.org/stable/std/result/enum.Result.html#method.flatten)
- [`std::os::linux::net::TcpStreamExt::quickack`]
(https://doc.rust-lang.org/stable/std/os/linux/net/trait.TcpStreamExt.html#tymethod.quickack)
- [`std::os::linux::net::TcpStreamExt::set_quickack`]
(https://doc.rust-lang.org/stable/std/os/linux/net/trait.TcpStreamExt.html#tymethod.set_quickack)
These previously stable APIs are now stable in const contexts:
- [`<[T; N]>::as_mut_slice`]
(https://doc.rust-lang.org/stable/std/primitive.array.html#method.as_mut_slice)
- [`<[u8]>::eq_ignore_ascii_case`]
(https://doc.rust-lang.org/stable/std/primitive.slice.html#impl-%5Bu8%5D/method.eq_ignore_ascii_case)
- [`str::eq_ignore_ascii_case`]
(https://doc.rust-lang.org/stable/std/primitive.str.html#impl-str/method.eq_ignore_ascii_case)
Cargo
-----
- [`cargo fix` and `cargo clippy --fix` now default to the same
Cargo target selection as other build commands.]
(rust-lang/cargo#15192) Previously it
would apply to all targets (like binaries, examples, tests, etc.).
The `--edition` flag still applies to all targets.
- [Stabilize doctest-xcompile.]
(rust-lang/cargo#15462) Doctests are
now tested when cross-compiling. Just like other tests, it will
use the [`runner` setting]
(https://doc.rust-lang.org/cargo/reference/config.html#targettriplerunner)
to run the tests. If you need to disable tests for a target, you
can use the [ignore doctest attribute]
(https://doc.rust-lang.org/rustdoc/write-documentation/documentation-tests.html#ignoring-targets)
to specify the targets to ignore.
Rustdoc
-----
- [On mobile, make the sidebar full width and linewrap]
(rust-lang/rust#139831). This makes long
section and item names much easier to deal with on mobile.
Compatibility Notes
-------------------
- [Make `missing_fragment_specifier` an unconditional error]
(rust-lang/rust#128425)
- [Enabling the `neon` target feature on `aarch64-unknown-none-softfloat`
causes a warning]
(rust-lang/rust#135160) because mixing
code with and without that target feature is not properly supported
by LLVM
- [Sized Hierarchy: Part I](rust-lang/rust#137944)
- Introduces a small breaking change affecting `?Sized` bounds
on impls on recursive types which contain associated type
projections. It is not expected to affect any existing published
crates. Can be fixed by refactoring the involved types or opting
into the `sized_hierarchy` unstable feature. See the [FCP report]
(rust-lang/rust#137944 (comment))
for a code example.
- The warn-by-default `elided_named_lifetimes` lint is [superseded
by the warn-by-default `mismatched_lifetime_syntaxes` lint.]
(rust-lang/rust#138677)
- [Error on recursive opaque types earlier in the type checker]
(rust-lang/rust#139419)
- [Type inference side effects from requiring element types of
array repeat expressions are `Copy` are now only available at the
end of type checking]
(rust-lang/rust#139635)
- [The deprecated accidentally-stable
`std::intrinsics::{copy,copy_nonoverlapping,write_bytes}` are now
proper intrinsics]
(rust-lang/rust#139916). There are no
debug assertions guarding against UB, and they cannot be coerced
to function pointers.
- [Remove long-deprecated `std::intrinsics::drop_in_place`]
(rust-lang/rust#140151)
- [Make well-formedness predicates no longer coinductive]
(rust-lang/rust#140208)
- [Remove hack when checking impl method compatibility]
(rust-lang/rust#140557)
- [Remove unnecessary type inference due to built-in trait object impls]
(rust-lang/rust#141352)
- [Lint against "stdcall", "fastcall", and "cdecl" on non-x86-32 targets]
(rust-lang/rust#141435)
- [Future incompatibility warnings relating to the never type (`!`)
are now reported in dependencies]
(rust-lang/rust#141937)
- [Ensure `std::ptr::copy_*` intrinsics also perform the static
self-init checks]
(rust-lang/rust#142575)
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.
- [Correctly un-remap compiler sources paths with the `rustc-dev` component]
(rust-lang/rust#142377)
riastradh pushed a commit to riastradh/pkgsrc-test20250901 that referenced this pull request Feb 8, 2026
Pkgsrc changes:
* Disable the build of NetBSD-*aarch64eb, since it now fails both
to cross-build and to build natively.
Ref. rust-lang/rust#146842
* Adjusted patches, checksum updates etc.
Upstream changes:
Version 1.90 (2025-09-18)
==========================
Language
--------
- [Split up the `unknown_or_malformed_diagnostic_attributes` lint]
(rust-lang/rust#140717). This lint has
been split up into four finer-grained lints, with
`unknown_or_malformed_diagnostic_attributes` now being the lint
group that contains these lints:
1. `unknown_diagnostic_attributes`: unknown to the current compiler
2. `misplaced_diagnostic_attributes`: placed on the wrong item
3. `malformed_diagnostic_attributes`: malformed attribute syntax or options
4. `malformed_diagnostic_format_literals`: malformed format string literal
- [Allow constants whose final value has references to mutable/external
memory, but reject such constants as patterns]
(rust-lang/rust#140942)
- [Allow volatile access to non-Rust memory, including address 0]
(rust-lang/rust#141260)
Compiler
--------
- [Use `lld` by default on `x86_64-unknown-linux-gnu`]
(rust-lang/rust#140525).
- [Tier 3 `musl` targets now link dynamically by default]
(rust-lang/rust#144410). Affected targets:
- `mips64-unknown-linux-muslabi64`
- `powerpc64-unknown-linux-musl`
- `powerpc-unknown-linux-musl`
- `powerpc-unknown-linux-muslspe`
- `riscv32gc-unknown-linux-musl`
- `s390x-unknown-linux-musl`
- `thumbv7neon-unknown-linux-musleabihf`
Platform Support
----------------
- [Demote `x86_64-apple-darwin` to Tier 2 with host tools]
(rust-lang/rust#145252)
Refer to Rust's [platform support page][platform-support-doc]
for more information on Rust's tiered platform support.
[platform-support-doc]: https://doc.rust-lang.org/rustc/platform-support.html
Libraries
---------
- [Stabilize `u*::{checked,overflowing,saturating,wrapping}_sub_signed`]
(rust-lang/rust#126043)
- [Allow comparisons between `CStr`, `CString`, and `Cow<CStr>`]
(rust-lang/rust#137268)
- [Remove some unsized tuple impls since unsized tuples can't be constructed]
(rust-lang/rust#138340)
- [Set `MSG_NOSIGNAL` for `UnixStream`]
(rust-lang/rust#140005)
- [`proc_macro::Ident::new` now supports `$crate`.]
(rust-lang/rust#141996)
- [Guarantee the pointer returned from `Thread::into_raw` has at
least 8 bytes of alignment]
(rust-lang/rust#143859)
Stabilized APIs
---------------
- [`u{n}::checked_sub_signed`]
(https://doc.rust-lang.org/stable/std/primitive.usize.html#method.checked_sub_signed)
- [`u{n}::overflowing_sub_signed`]
(https://doc.rust-lang.org/stable/std/primitive.usize.html#method.overflowing_sub_signed)
- [`u{n}::saturating_sub_signed`]
(https://doc.rust-lang.org/stable/std/primitive.usize.html#method.saturating_sub_signed)
- [`u{n}::wrapping_sub_signed`]
(https://doc.rust-lang.org/stable/std/primitive.usize.html#method.wrapping_sub_signed)
- [`impl Copy for IntErrorKind`]
(https://doc.rust-lang.org/stable/std/num/enum.IntErrorKind.html#impl-Copy-for-IntErrorKind)
- [`impl Hash for IntErrorKind`]
(https://doc.rust-lang.org/stable/std/num/enum.IntErrorKind.html#impl-Hash-for-IntErrorKind)
- [`impl PartialEq<&CStr> for CStr`]
(https://doc.rust-lang.org/stable/std/ffi/struct.CStr.html#impl-PartialEq%3C%26CStr%3E-for-CStr)
- [`impl PartialEq<CString> for CStr`]
(https://doc.rust-lang.org/stable/std/ffi/struct.CStr.html#impl-PartialEq%3CCString%3E-for-CStr)
- [`impl PartialEq<Cow<CStr>> for CStr`]
(https://doc.rust-lang.org/stable/std/ffi/struct.CStr.html#impl-PartialEq%3CCow%3C'_,+CStr%3E%3E-for-CStr)
- [`impl PartialEq<&CStr> for CString`]
(https://doc.rust-lang.org/stable/std/ffi/struct.CString.html#impl-PartialEq%3C%26CStr%3E-for-CString)
- [`impl PartialEq<CStr> for CString`]
(https://doc.rust-lang.org/stable/std/ffi/struct.CString.html#impl-PartialEq%3CCStr%3E-for-CString)
- [`impl PartialEq<Cow<CStr>> for CString`]
(https://doc.rust-lang.org/stable/std/ffi/struct.CString.html#impl-PartialEq%3CCow%3C'_,+CStr%3E%3E-for-CString)
- [`impl PartialEq<&CStr> for Cow<CStr>`]
(https://doc.rust-lang.org/stable/std/borrow/enum.Cow.html#impl-PartialEq%3C%26CStr%3E-for-Cow%3C'_,+CStr%3E)
- [`impl PartialEq<CStr> for Cow<CStr>`]
(https://doc.rust-lang.org/stable/std/borrow/enum.Cow.html#impl-PartialEq%3CCStr%3E-for-Cow%3C'_,+CStr%3E)
- [`impl PartialEq<CString> for Cow<CStr>`]
(https://doc.rust-lang.org/stable/std/borrow/enum.Cow.html#impl-PartialEq%3CCString%3E-for-Cow%3C'_,+CStr%3E)
These previously stable APIs are now stable in const contexts:
- [`<[T]>::reverse`]
(https://doc.rust-lang.org/stable/std/primitive.slice.html#method.reverse)
- [`f32::floor`]
(https://doc.rust-lang.org/stable/std/primitive.f32.html#method.floor)
- [`f32::ceil`]
(https://doc.rust-lang.org/stable/std/primitive.f32.html#method.ceil)
- [`f32::trunc`]
(https://doc.rust-lang.org/stable/std/primitive.f32.html#method.trunc)
- [`f32::fract`]
(https://doc.rust-lang.org/stable/std/primitive.f32.html#method.fract)
(https://doc.rust-lang.org/stable/std/primitive.f32.html#method.fract)
- [`f32::round`]
(https://doc.rust-lang.org/stable/std/primitive.f32.html#method.round)
- [`f32::round_ties_even`]
(https://doc.rust-lang.org/stable/std/primitive.f32.html#method.round_ties_even)
- [`f64::floor`]
(https://doc.rust-lang.org/stable/std/primitive.f64.html#method.floor)
- [`f64::ceil`]
(https://doc.rust-lang.org/stable/std/primitive.f64.html#method.ceil)
- [`f64::trunc`]
(https://doc.rust-lang.org/stable/std/primitive.f64.html#method.trunc)
- [`f64::fract`]
(https://doc.rust-lang.org/stable/std/primitive.f64.html#method.fract)
- [`f64::round`]
(https://doc.rust-lang.org/stable/std/primitive.f64.html#method.round)
- [`f64::round_ties_even`]
(https://doc.rust-lang.org/stable/std/primitive.f64.html#method.round_ties_even)
Cargo
-----
- [Add `http.proxy-cainfo` config for proxy certs]
(rust-lang/cargo#15374)
- [Use `gix` for `cargo package`]
(rust-lang/cargo#15534)
- [feat(publish): Stabilize multi-package publishing]
(rust-lang/cargo#15636)
Rustdoc
-----
- [Add ways to collapse all impl blocks]
(rust-lang/rust#141663). Previously the
"Summary" button and "-" keyboard shortcut would never collapse
`impl` blocks, now they do when shift is held
- [Display unsafe attributes with `unsafe()` wrappers]
(rust-lang/rust#143662)
Compatibility Notes
-------------------
- [Use `lld` by default on `x86_64-unknown-linux-gnu`]
(rust-lang/rust#140525).
See also <https://blog.rust-lang.org/2025/09/01/rust-lld-on-1.90.0-stable/>.
- [Make `core::iter::Fuse`'s `Default` impl construct `I::default()`
internally as promised in the docs instead of always being empty]
(rust-lang/rust#140985)
- [Set `MSG_NOSIGNAL` for `UnixStream`]
(rust-lang/rust#140005) This may change
program behavior but results in the same behavior as other
primitives (e.g., stdout, network sockets). Programs relying on
signals to terminate them should update handling of sockets to
handle errors on write by exiting.
- [On Unix `std::env::home_dir` will use the fallback if the `HOME`
environment variable is empty]
(rust-lang/rust#141840)
- We now [reject unsupported `extern "{abi}"`s consistently in all
positions] (rust-lang/rust#142134). This
primarily affects the use of implementing traits on an `extern
"{abi}"` function pointer, like `extern "stdcall" fn()`, on a
platform that doesn't support that, like aarch64-unknown-linux-gnu.
Direct usage of these unsupported ABI strings by declaring or
defining functions was already rejected, so this is only a change
for consistency.
- [const-eval: error when initializing a static writes to that static]
(rust-lang/rust#143084)
- [Check that the `proc_macro_derive` macro has correct arguments
when applied to the crate root]
(rust-lang/rust#143607)
Version 1.89.0 (2025-08-07)
==========================
Language
--------
- [Stabilize explicitly inferred const arguments (`feature(generic_arg_infer)`)]
(rust-lang/rust#141610)
- [Add a warn-by-default `mismatched_lifetime_syntaxes` lint.]
(rust-lang/rust#138677)
This lint detects when the same lifetime is referred to by
different syntax categories between function arguments and return
values, which can be confusing to read, especially in unsafe
code. This lint supersedes the warn-by-default `elided_named_lifetimes`
lint.
- [Expand `unpredictable_function_pointer_comparisons` to also lint
on function pointer comparisons in external macros]
(rust-lang/rust#134536)
- [Make the `dangerous_implicit_autorefs` lint deny-by-default]
(rust-lang/rust#141661)
- [Stabilize the avx512 target features]
(rust-lang/rust#138940)
- [Stabilize `kl` and `widekl` target features for x86]
(rust-lang/rust#140766)
- [Stabilize `sha512`, `sm3` and `sm4` target features for x86]
(rust-lang/rust#140767)
- [Stabilize LoongArch target features `f`, `d`, `frecipe`, `lasx`,
`lbt`, `lsx`, and `lvz`]
(rust-lang/rust#135015)
- [Remove `i128` and `u128` from `improper_ctypes_definitions`]
(rust-lang/rust#137306)
- [Stabilize `repr128` (`#[repr(u128)]`, `#[repr(i128)]`)]
(rust-lang/rust#138285)
- [Allow `#![doc(test(attr(..)))]` everywhere]
(rust-lang/rust#140560)
- [Extend temporary lifetime extension to also go through tuple
struct and tuple variant constructors]
(rust-lang/rust#140593)
Compiler
--------
- [Default to non-leaf frame pointers on aarch64-linux]
(rust-lang/rust#140832)
- [Enable non-leaf frame pointers for Arm64EC Windows]
(rust-lang/rust#140862)
- [Set Apple frame pointers by architecture]
(rust-lang/rust#141797)
Platform Support
----------------
- [Add new Tier-3 targets `loongarch32-unknown-none` and
`loongarch32-unknown-none-softfloat`]
(rust-lang/rust#142053)
Refer to Rust's [platform support page][platform-support-doc]
for more information on Rust's tiered platform support.
[platform-support-doc]: https://doc.rust-lang.org/rustc/platform-support.html
Libraries
---------
- [Specify the base path for `file!`]
(rust-lang/rust#134442)
- [Allow storing `format_args!()` in a variable]
(rust-lang/rust#140748)
- [Add `#[must_use]` to `[T; N]::map`]
(rust-lang/rust#140957)
- [Implement `DerefMut` for `Lazy{Cell,Lock}`]
(rust-lang/rust#129334)
- [Implement `Default` for `array::IntoIter`]
(rust-lang/rust#141574)
- [Implement `Clone` for `slice::ChunkBy`]
(rust-lang/rust#138016)
- [Implement `io::Seek` for `io::Take`]
(rust-lang/rust#138023)
Stabilized APIs
---------------
- [`NonZero<char>`]
(https://doc.rust-lang.org/stable/std/num/struct.NonZero.html)
- Many intrinsics for x86, not enumerated here
- [AVX512 intrinsics](rust-lang/rust#111137)
- [`SHA512`, `SM3` and `SM4` intrinsics]
(rust-lang/rust#126624)
- [`File::lock`]
(https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.lock)
- [`File::lock_shared`]
(https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.lock_shared)
- [`File::try_lock`]
(https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.try_lock)
- [`File::try_lock_shared`]
(https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.try_lock_shared)
- [`File::unlock`]
(https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.unlock)
- [`NonNull::from_ref`]
(https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.from_ref)
- [`NonNull::from_mut`]
(https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.from_mut)
- [`NonNull::without_provenance`]
(https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.without_provenance)
- [`NonNull::with_exposed_provenance`]
(https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.with_exposed_provenance)
- [`NonNull::expose_provenance`]
(https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.expose_provenance)
- [`OsString::leak`]
(https://doc.rust-lang.org/stable/std/ffi/struct.OsString.html#method.leak)
- [`PathBuf::leak`]
(https://doc.rust-lang.org/stable/std/path/struct.PathBuf.html#method.leak)
- [`Result::flatten`]
(https://doc.rust-lang.org/stable/std/result/enum.Result.html#method.flatten)
- [`std::os::linux::net::TcpStreamExt::quickack`]
(https://doc.rust-lang.org/stable/std/os/linux/net/trait.TcpStreamExt.html#tymethod.quickack)
- [`std::os::linux::net::TcpStreamExt::set_quickack`]
(https://doc.rust-lang.org/stable/std/os/linux/net/trait.TcpStreamExt.html#tymethod.set_quickack)
These previously stable APIs are now stable in const contexts:
- [`<[T; N]>::as_mut_slice`]
(https://doc.rust-lang.org/stable/std/primitive.array.html#method.as_mut_slice)
- [`<[u8]>::eq_ignore_ascii_case`]
(https://doc.rust-lang.org/stable/std/primitive.slice.html#impl-%5Bu8%5D/method.eq_ignore_ascii_case)
- [`str::eq_ignore_ascii_case`]
(https://doc.rust-lang.org/stable/std/primitive.str.html#impl-str/method.eq_ignore_ascii_case)
Cargo
-----
- [`cargo fix` and `cargo clippy --fix` now default to the same
Cargo target selection as other build commands.]
(rust-lang/cargo#15192) Previously it
would apply to all targets (like binaries, examples, tests, etc.).
The `--edition` flag still applies to all targets.
- [Stabilize doctest-xcompile.]
(rust-lang/cargo#15462) Doctests are
now tested when cross-compiling. Just like other tests, it will
use the [`runner` setting]
(https://doc.rust-lang.org/cargo/reference/config.html#targettriplerunner)
to run the tests. If you need to disable tests for a target, you
can use the [ignore doctest attribute]
(https://doc.rust-lang.org/rustdoc/write-documentation/documentation-tests.html#ignoring-targets)
to specify the targets to ignore.
Rustdoc
-----
- [On mobile, make the sidebar full width and linewrap]
(rust-lang/rust#139831). This makes long
section and item names much easier to deal with on mobile.
Compatibility Notes
-------------------
- [Make `missing_fragment_specifier` an unconditional error]
(rust-lang/rust#128425)
- [Enabling the `neon` target feature on `aarch64-unknown-none-softfloat`
causes a warning]
(rust-lang/rust#135160) because mixing
code with and without that target feature is not properly supported
by LLVM
- [Sized Hierarchy: Part I](rust-lang/rust#137944)
- Introduces a small breaking change affecting `?Sized` bounds
on impls on recursive types which contain associated type
projections. It is not expected to affect any existing published
crates. Can be fixed by refactoring the involved types or opting
into the `sized_hierarchy` unstable feature. See the [FCP report]
(rust-lang/rust#137944 (comment))
for a code example.
- The warn-by-default `elided_named_lifetimes` lint is [superseded
by the warn-by-default `mismatched_lifetime_syntaxes` lint.]
(rust-lang/rust#138677)
- [Error on recursive opaque types earlier in the type checker]
(rust-lang/rust#139419)
- [Type inference side effects from requiring element types of
array repeat expressions are `Copy` are now only available at the
end of type checking]
(rust-lang/rust#139635)
- [The deprecated accidentally-stable
`std::intrinsics::{copy,copy_nonoverlapping,write_bytes}` are now
proper intrinsics]
(rust-lang/rust#139916). There are no
debug assertions guarding against UB, and they cannot be coerced
to function pointers.
- [Remove long-deprecated `std::intrinsics::drop_in_place`]
(rust-lang/rust#140151)
- [Make well-formedness predicates no longer coinductive]
(rust-lang/rust#140208)
- [Remove hack when checking impl method compatibility]
(rust-lang/rust#140557)
- [Remove unnecessary type inference due to built-in trait object impls]
(rust-lang/rust#141352)
- [Lint against "stdcall", "fastcall", and "cdecl" on non-x86-32 targets]
(rust-lang/rust#141435)
- [Future incompatibility warnings relating to the never type (`!`)
are now reported in dependencies]
(rust-lang/rust#141937)
- [Ensure `std::ptr::copy_*` intrinsics also perform the static
self-init checks]
(rust-lang/rust#142575)
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.
- [Correctly un-remap compiler sources paths with the `rustc-dev` component]
(rust-lang/rust#142377)
msk pushed a commit to msk/pkgsrc that referenced this pull request May 11, 2026
Pkgsrc changes:
* Disable the build of NetBSD-*aarch64eb, since it now fails both
to cross-build and to build natively.
Ref. rust-lang/rust#146842
* Adjusted patches, checksum updates etc.
Upstream changes:
Version 1.90 (2025-09-18)
==========================
Language
--------
- [Split up the `unknown_or_malformed_diagnostic_attributes` lint]
(rust-lang/rust#140717). This lint has
been split up into four finer-grained lints, with
`unknown_or_malformed_diagnostic_attributes` now being the lint
group that contains these lints:
1. `unknown_diagnostic_attributes`: unknown to the current compiler
2. `misplaced_diagnostic_attributes`: placed on the wrong item
3. `malformed_diagnostic_attributes`: malformed attribute syntax or options
4. `malformed_diagnostic_format_literals`: malformed format string literal
- [Allow constants whose final value has references to mutable/external
memory, but reject such constants as patterns]
(rust-lang/rust#140942)
- [Allow volatile access to non-Rust memory, including address 0]
(rust-lang/rust#141260)
Compiler
--------
- [Use `lld` by default on `x86_64-unknown-linux-gnu`]
(rust-lang/rust#140525).
- [Tier 3 `musl` targets now link dynamically by default]
(rust-lang/rust#144410). Affected targets:
- `mips64-unknown-linux-muslabi64`
- `powerpc64-unknown-linux-musl`
- `powerpc-unknown-linux-musl`
- `powerpc-unknown-linux-muslspe`
- `riscv32gc-unknown-linux-musl`
- `s390x-unknown-linux-musl`
- `thumbv7neon-unknown-linux-musleabihf`
Platform Support
----------------
- [Demote `x86_64-apple-darwin` to Tier 2 with host tools]
(rust-lang/rust#145252)
Refer to Rust's [platform support page][platform-support-doc]
for more information on Rust's tiered platform support.
[platform-support-doc]: https://doc.rust-lang.org/rustc/platform-support.html
Libraries
---------
- [Stabilize `u*::{checked,overflowing,saturating,wrapping}_sub_signed`]
(rust-lang/rust#126043)
- [Allow comparisons between `CStr`, `CString`, and `Cow<CStr>`]
(rust-lang/rust#137268)
- [Remove some unsized tuple impls since unsized tuples can't be constructed]
(rust-lang/rust#138340)
- [Set `MSG_NOSIGNAL` for `UnixStream`]
(rust-lang/rust#140005)
- [`proc_macro::Ident::new` now supports `$crate`.]
(rust-lang/rust#141996)
- [Guarantee the pointer returned from `Thread::into_raw` has at
least 8 bytes of alignment]
(rust-lang/rust#143859)
Stabilized APIs
---------------
- [`u{n}::checked_sub_signed`]
(https://doc.rust-lang.org/stable/std/primitive.usize.html#method.checked_sub_signed)
- [`u{n}::overflowing_sub_signed`]
(https://doc.rust-lang.org/stable/std/primitive.usize.html#method.overflowing_sub_signed)
- [`u{n}::saturating_sub_signed`]
(https://doc.rust-lang.org/stable/std/primitive.usize.html#method.saturating_sub_signed)
- [`u{n}::wrapping_sub_signed`]
(https://doc.rust-lang.org/stable/std/primitive.usize.html#method.wrapping_sub_signed)
- [`impl Copy for IntErrorKind`]
(https://doc.rust-lang.org/stable/std/num/enum.IntErrorKind.html#impl-Copy-for-IntErrorKind)
- [`impl Hash for IntErrorKind`]
(https://doc.rust-lang.org/stable/std/num/enum.IntErrorKind.html#impl-Hash-for-IntErrorKind)
- [`impl PartialEq<&CStr> for CStr`]
(https://doc.rust-lang.org/stable/std/ffi/struct.CStr.html#impl-PartialEq%3C%26CStr%3E-for-CStr)
- [`impl PartialEq<CString> for CStr`]
(https://doc.rust-lang.org/stable/std/ffi/struct.CStr.html#impl-PartialEq%3CCString%3E-for-CStr)
- [`impl PartialEq<Cow<CStr>> for CStr`]
(https://doc.rust-lang.org/stable/std/ffi/struct.CStr.html#impl-PartialEq%3CCow%3C'_,+CStr%3E%3E-for-CStr)
- [`impl PartialEq<&CStr> for CString`]
(https://doc.rust-lang.org/stable/std/ffi/struct.CString.html#impl-PartialEq%3C%26CStr%3E-for-CString)
- [`impl PartialEq<CStr> for CString`]
(https://doc.rust-lang.org/stable/std/ffi/struct.CString.html#impl-PartialEq%3CCStr%3E-for-CString)
- [`impl PartialEq<Cow<CStr>> for CString`]
(https://doc.rust-lang.org/stable/std/ffi/struct.CString.html#impl-PartialEq%3CCow%3C'_,+CStr%3E%3E-for-CString)
- [`impl PartialEq<&CStr> for Cow<CStr>`]
(https://doc.rust-lang.org/stable/std/borrow/enum.Cow.html#impl-PartialEq%3C%26CStr%3E-for-Cow%3C'_,+CStr%3E)
- [`impl PartialEq<CStr> for Cow<CStr>`]
(https://doc.rust-lang.org/stable/std/borrow/enum.Cow.html#impl-PartialEq%3CCStr%3E-for-Cow%3C'_,+CStr%3E)
- [`impl PartialEq<CString> for Cow<CStr>`]
(https://doc.rust-lang.org/stable/std/borrow/enum.Cow.html#impl-PartialEq%3CCString%3E-for-Cow%3C'_,+CStr%3E)
These previously stable APIs are now stable in const contexts:
- [`<[T]>::reverse`]
(https://doc.rust-lang.org/stable/std/primitive.slice.html#method.reverse)
- [`f32::floor`]
(https://doc.rust-lang.org/stable/std/primitive.f32.html#method.floor)
- [`f32::ceil`]
(https://doc.rust-lang.org/stable/std/primitive.f32.html#method.ceil)
- [`f32::trunc`]
(https://doc.rust-lang.org/stable/std/primitive.f32.html#method.trunc)
- [`f32::fract`]
(https://doc.rust-lang.org/stable/std/primitive.f32.html#method.fract)
(https://doc.rust-lang.org/stable/std/primitive.f32.html#method.fract)
- [`f32::round`]
(https://doc.rust-lang.org/stable/std/primitive.f32.html#method.round)
- [`f32::round_ties_even`]
(https://doc.rust-lang.org/stable/std/primitive.f32.html#method.round_ties_even)
- [`f64::floor`]
(https://doc.rust-lang.org/stable/std/primitive.f64.html#method.floor)
- [`f64::ceil`]
(https://doc.rust-lang.org/stable/std/primitive.f64.html#method.ceil)
- [`f64::trunc`]
(https://doc.rust-lang.org/stable/std/primitive.f64.html#method.trunc)
- [`f64::fract`]
(https://doc.rust-lang.org/stable/std/primitive.f64.html#method.fract)
- [`f64::round`]
(https://doc.rust-lang.org/stable/std/primitive.f64.html#method.round)
- [`f64::round_ties_even`]
(https://doc.rust-lang.org/stable/std/primitive.f64.html#method.round_ties_even)
Cargo
-----
- [Add `http.proxy-cainfo` config for proxy certs]
(rust-lang/cargo#15374)
- [Use `gix` for `cargo package`]
(rust-lang/cargo#15534)
- [feat(publish): Stabilize multi-package publishing]
(rust-lang/cargo#15636)
Rustdoc
-----
- [Add ways to collapse all impl blocks]
(rust-lang/rust#141663). Previously the
"Summary" button and "-" keyboard shortcut would never collapse
`impl` blocks, now they do when shift is held
- [Display unsafe attributes with `unsafe()` wrappers]
(rust-lang/rust#143662)
Compatibility Notes
-------------------
- [Use `lld` by default on `x86_64-unknown-linux-gnu`]
(rust-lang/rust#140525).
See also <https://blog.rust-lang.org/2025/09/01/rust-lld-on-1.90.0-stable/>.
- [Make `core::iter::Fuse`'s `Default` impl construct `I::default()`
internally as promised in the docs instead of always being empty]
(rust-lang/rust#140985)
- [Set `MSG_NOSIGNAL` for `UnixStream`]
(rust-lang/rust#140005) This may change
program behavior but results in the same behavior as other
primitives (e.g., stdout, network sockets). Programs relying on
signals to terminate them should update handling of sockets to
handle errors on write by exiting.
- [On Unix `std::env::home_dir` will use the fallback if the `HOME`
environment variable is empty]
(rust-lang/rust#141840)
- We now [reject unsupported `extern "{abi}"`s consistently in all
positions] (rust-lang/rust#142134). This
primarily affects the use of implementing traits on an `extern
"{abi}"` function pointer, like `extern "stdcall" fn()`, on a
platform that doesn't support that, like aarch64-unknown-linux-gnu.
Direct usage of these unsupported ABI strings by declaring or
defining functions was already rejected, so this is only a change
for consistency.
- [const-eval: error when initializing a static writes to that static]
(rust-lang/rust#143084)
- [Check that the `proc_macro_derive` macro has correct arguments
when applied to the crate root]
(rust-lang/rust#143607)
Version 1.89.0 (2025-08-07)
==========================
Language
--------
- [Stabilize explicitly inferred const arguments (`feature(generic_arg_infer)`)]
(rust-lang/rust#141610)
- [Add a warn-by-default `mismatched_lifetime_syntaxes` lint.]
(rust-lang/rust#138677)
This lint detects when the same lifetime is referred to by
different syntax categories between function arguments and return
values, which can be confusing to read, especially in unsafe
code. This lint supersedes the warn-by-default `elided_named_lifetimes`
lint.
- [Expand `unpredictable_function_pointer_comparisons` to also lint
on function pointer comparisons in external macros]
(rust-lang/rust#134536)
- [Make the `dangerous_implicit_autorefs` lint deny-by-default]
(rust-lang/rust#141661)
- [Stabilize the avx512 target features]
(rust-lang/rust#138940)
- [Stabilize `kl` and `widekl` target features for x86]
(rust-lang/rust#140766)
- [Stabilize `sha512`, `sm3` and `sm4` target features for x86]
(rust-lang/rust#140767)
- [Stabilize LoongArch target features `f`, `d`, `frecipe`, `lasx`,
`lbt`, `lsx`, and `lvz`]
(rust-lang/rust#135015)
- [Remove `i128` and `u128` from `improper_ctypes_definitions`]
(rust-lang/rust#137306)
- [Stabilize `repr128` (`#[repr(u128)]`, `#[repr(i128)]`)]
(rust-lang/rust#138285)
- [Allow `#![doc(test(attr(..)))]` everywhere]
(rust-lang/rust#140560)
- [Extend temporary lifetime extension to also go through tuple
struct and tuple variant constructors]
(rust-lang/rust#140593)
Compiler
--------
- [Default to non-leaf frame pointers on aarch64-linux]
(rust-lang/rust#140832)
- [Enable non-leaf frame pointers for Arm64EC Windows]
(rust-lang/rust#140862)
- [Set Apple frame pointers by architecture]
(rust-lang/rust#141797)
Platform Support
----------------
- [Add new Tier-3 targets `loongarch32-unknown-none` and
`loongarch32-unknown-none-softfloat`]
(rust-lang/rust#142053)
Refer to Rust's [platform support page][platform-support-doc]
for more information on Rust's tiered platform support.
[platform-support-doc]: https://doc.rust-lang.org/rustc/platform-support.html
Libraries
---------
- [Specify the base path for `file!`]
(rust-lang/rust#134442)
- [Allow storing `format_args!()` in a variable]
(rust-lang/rust#140748)
- [Add `#[must_use]` to `[T; N]::map`]
(rust-lang/rust#140957)
- [Implement `DerefMut` for `Lazy{Cell,Lock}`]
(rust-lang/rust#129334)
- [Implement `Default` for `array::IntoIter`]
(rust-lang/rust#141574)
- [Implement `Clone` for `slice::ChunkBy`]
(rust-lang/rust#138016)
- [Implement `io::Seek` for `io::Take`]
(rust-lang/rust#138023)
Stabilized APIs
---------------
- [`NonZero<char>`]
(https://doc.rust-lang.org/stable/std/num/struct.NonZero.html)
- Many intrinsics for x86, not enumerated here
- [AVX512 intrinsics](rust-lang/rust#111137)
- [`SHA512`, `SM3` and `SM4` intrinsics]
(rust-lang/rust#126624)
- [`File::lock`]
(https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.lock)
- [`File::lock_shared`]
(https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.lock_shared)
- [`File::try_lock`]
(https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.try_lock)
- [`File::try_lock_shared`]
(https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.try_lock_shared)
- [`File::unlock`]
(https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.unlock)
- [`NonNull::from_ref`]
(https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.from_ref)
- [`NonNull::from_mut`]
(https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.from_mut)
- [`NonNull::without_provenance`]
(https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.without_provenance)
- [`NonNull::with_exposed_provenance`]
(https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.with_exposed_provenance)
- [`NonNull::expose_provenance`]
(https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.expose_provenance)
- [`OsString::leak`]
(https://doc.rust-lang.org/stable/std/ffi/struct.OsString.html#method.leak)
- [`PathBuf::leak`]
(https://doc.rust-lang.org/stable/std/path/struct.PathBuf.html#method.leak)
- [`Result::flatten`]
(https://doc.rust-lang.org/stable/std/result/enum.Result.html#method.flatten)
- [`std::os::linux::net::TcpStreamExt::quickack`]
(https://doc.rust-lang.org/stable/std/os/linux/net/trait.TcpStreamExt.html#tymethod.quickack)
- [`std::os::linux::net::TcpStreamExt::set_quickack`]
(https://doc.rust-lang.org/stable/std/os/linux/net/trait.TcpStreamExt.html#tymethod.set_quickack)
These previously stable APIs are now stable in const contexts:
- [`<[T; N]>::as_mut_slice`]
(https://doc.rust-lang.org/stable/std/primitive.array.html#method.as_mut_slice)
- [`<[u8]>::eq_ignore_ascii_case`]
(https://doc.rust-lang.org/stable/std/primitive.slice.html#impl-%5Bu8%5D/method.eq_ignore_ascii_case)
- [`str::eq_ignore_ascii_case`]
(https://doc.rust-lang.org/stable/std/primitive.str.html#impl-str/method.eq_ignore_ascii_case)
Cargo
-----
- [`cargo fix` and `cargo clippy --fix` now default to the same
Cargo target selection as other build commands.]
(rust-lang/cargo#15192) Previously it
would apply to all targets (like binaries, examples, tests, etc.).
The `--edition` flag still applies to all targets.
- [Stabilize doctest-xcompile.]
(rust-lang/cargo#15462) Doctests are
now tested when cross-compiling. Just like other tests, it will
use the [`runner` setting]
(https://doc.rust-lang.org/cargo/reference/config.html#targettriplerunner)
to run the tests. If you need to disable tests for a target, you
can use the [ignore doctest attribute]
(https://doc.rust-lang.org/rustdoc/write-documentation/documentation-tests.html#ignoring-targets)
to specify the targets to ignore.
Rustdoc
-----
- [On mobile, make the sidebar full width and linewrap]
(rust-lang/rust#139831). This makes long
section and item names much easier to deal with on mobile.
Compatibility Notes
-------------------
- [Make `missing_fragment_specifier` an unconditional error]
(rust-lang/rust#128425)
- [Enabling the `neon` target feature on `aarch64-unknown-none-softfloat`
causes a warning]
(rust-lang/rust#135160) because mixing
code with and without that target feature is not properly supported
by LLVM
- [Sized Hierarchy: Part I](rust-lang/rust#137944)
- Introduces a small breaking change affecting `?Sized` bounds
on impls on recursive types which contain associated type
projections. It is not expected to affect any existing published
crates. Can be fixed by refactoring the involved types or opting
into the `sized_hierarchy` unstable feature. See the [FCP report]
(rust-lang/rust#137944 (comment))
for a code example.
- The warn-by-default `elided_named_lifetimes` lint is [superseded
by the warn-by-default `mismatched_lifetime_syntaxes` lint.]
(rust-lang/rust#138677)
- [Error on recursive opaque types earlier in the type checker]
(rust-lang/rust#139419)
- [Type inference side effects from requiring element types of
array repeat expressions are `Copy` are now only available at the
end of type checking]
(rust-lang/rust#139635)
- [The deprecated accidentally-stable
`std::intrinsics::{copy,copy_nonoverlapping,write_bytes}` are now
proper intrinsics]
(rust-lang/rust#139916). There are no
debug assertions guarding against UB, and they cannot be coerced
to function pointers.
- [Remove long-deprecated `std::intrinsics::drop_in_place`]
(rust-lang/rust#140151)
- [Make well-formedness predicates no longer coinductive]
(rust-lang/rust#140208)
- [Remove hack when checking impl method compatibility]
(rust-lang/rust#140557)
- [Remove unnecessary type inference due to built-in trait object impls]
(rust-lang/rust#141352)
- [Lint against "stdcall", "fastcall", and "cdecl" on non-x86-32 targets]
(rust-lang/rust#141435)
- [Future incompatibility warnings relating to the never type (`!`)
are now reported in dependencies]
(rust-lang/rust#141937)
- [Ensure `std::ptr::copy_*` intrinsics also perform the static
self-init checks]
(rust-lang/rust#142575)
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.
- [Correctly un-remap compiler sources paths with the `rustc-dev` component]
(rust-lang/rust#142377)
netbsd-srcmastr pushed a commit to NetBSD/pkgsrc that referenced this pull request May 13, 2026
Pkgsrc changes:
* Disable the build of NetBSD-*aarch64eb, since it now fails both
to cross-build and to build natively.
Ref. rust-lang/rust#146842
* Adjusted patches, checksum updates etc.
Upstream changes:
Version 1.90 (2025-09-18)
==========================
Language
--------
- [Split up the `unknown_or_malformed_diagnostic_attributes` lint]
(rust-lang/rust#140717). This lint has
been split up into four finer-grained lints, with
`unknown_or_malformed_diagnostic_attributes` now being the lint
group that contains these lints:
1. `unknown_diagnostic_attributes`: unknown to the current compiler
2. `misplaced_diagnostic_attributes`: placed on the wrong item
3. `malformed_diagnostic_attributes`: malformed attribute syntax or options
4. `malformed_diagnostic_format_literals`: malformed format string literal
- [Allow constants whose final value has references to mutable/external
memory, but reject such constants as patterns]
(rust-lang/rust#140942)
- [Allow volatile access to non-Rust memory, including address 0]
(rust-lang/rust#141260)
Compiler
--------
- [Use `lld` by default on `x86_64-unknown-linux-gnu`]
(rust-lang/rust#140525).
- [Tier 3 `musl` targets now link dynamically by default]
(rust-lang/rust#144410). Affected targets:
- `mips64-unknown-linux-muslabi64`
- `powerpc64-unknown-linux-musl`
- `powerpc-unknown-linux-musl`
- `powerpc-unknown-linux-muslspe`
- `riscv32gc-unknown-linux-musl`
- `s390x-unknown-linux-musl`
- `thumbv7neon-unknown-linux-musleabihf`
Platform Support
----------------
- [Demote `x86_64-apple-darwin` to Tier 2 with host tools]
(rust-lang/rust#145252)
Refer to Rust's [platform support page][platform-support-doc]
for more information on Rust's tiered platform support.
[platform-support-doc]: https://doc.rust-lang.org/rustc/platform-support.html
Libraries
---------
- [Stabilize `u*::{checked,overflowing,saturating,wrapping}_sub_signed`]
(rust-lang/rust#126043)
- [Allow comparisons between `CStr`, `CString`, and `Cow<CStr>`]
(rust-lang/rust#137268)
- [Remove some unsized tuple impls since unsized tuples can't be constructed]
(rust-lang/rust#138340)
- [Set `MSG_NOSIGNAL` for `UnixStream`]
(rust-lang/rust#140005)
- [`proc_macro::Ident::new` now supports `$crate`.]
(rust-lang/rust#141996)
- [Guarantee the pointer returned from `Thread::into_raw` has at
least 8 bytes of alignment]
(rust-lang/rust#143859)
Stabilized APIs
---------------
- [`u{n}::checked_sub_signed`]
(https://doc.rust-lang.org/stable/std/primitive.usize.html#method.checked_sub_signed)
- [`u{n}::overflowing_sub_signed`]
(https://doc.rust-lang.org/stable/std/primitive.usize.html#method.overflowing_sub_signed)
- [`u{n}::saturating_sub_signed`]
(https://doc.rust-lang.org/stable/std/primitive.usize.html#method.saturating_sub_signed)
- [`u{n}::wrapping_sub_signed`]
(https://doc.rust-lang.org/stable/std/primitive.usize.html#method.wrapping_sub_signed)
- [`impl Copy for IntErrorKind`]
(https://doc.rust-lang.org/stable/std/num/enum.IntErrorKind.html#impl-Copy-for-IntErrorKind)
- [`impl Hash for IntErrorKind`]
(https://doc.rust-lang.org/stable/std/num/enum.IntErrorKind.html#impl-Hash-for-IntErrorKind)
- [`impl PartialEq<&CStr> for CStr`]
(https://doc.rust-lang.org/stable/std/ffi/struct.CStr.html#impl-PartialEq%3C%26CStr%3E-for-CStr)
- [`impl PartialEq<CString> for CStr`]
(https://doc.rust-lang.org/stable/std/ffi/struct.CStr.html#impl-PartialEq%3CCString%3E-for-CStr)
- [`impl PartialEq<Cow<CStr>> for CStr`]
(https://doc.rust-lang.org/stable/std/ffi/struct.CStr.html#impl-PartialEq%3CCow%3C'_,+CStr%3E%3E-for-CStr)
- [`impl PartialEq<&CStr> for CString`]
(https://doc.rust-lang.org/stable/std/ffi/struct.CString.html#impl-PartialEq%3C%26CStr%3E-for-CString)
- [`impl PartialEq<CStr> for CString`]
(https://doc.rust-lang.org/stable/std/ffi/struct.CString.html#impl-PartialEq%3CCStr%3E-for-CString)
- [`impl PartialEq<Cow<CStr>> for CString`]
(https://doc.rust-lang.org/stable/std/ffi/struct.CString.html#impl-PartialEq%3CCow%3C'_,+CStr%3E%3E-for-CString)
- [`impl PartialEq<&CStr> for Cow<CStr>`]
(https://doc.rust-lang.org/stable/std/borrow/enum.Cow.html#impl-PartialEq%3C%26CStr%3E-for-Cow%3C'_,+CStr%3E)
- [`impl PartialEq<CStr> for Cow<CStr>`]
(https://doc.rust-lang.org/stable/std/borrow/enum.Cow.html#impl-PartialEq%3CCStr%3E-for-Cow%3C'_,+CStr%3E)
- [`impl PartialEq<CString> for Cow<CStr>`]
(https://doc.rust-lang.org/stable/std/borrow/enum.Cow.html#impl-PartialEq%3CCString%3E-for-Cow%3C'_,+CStr%3E)
These previously stable APIs are now stable in const contexts:
- [`<[T]>::reverse`]
(https://doc.rust-lang.org/stable/std/primitive.slice.html#method.reverse)
- [`f32::floor`]
(https://doc.rust-lang.org/stable/std/primitive.f32.html#method.floor)
- [`f32::ceil`]
(https://doc.rust-lang.org/stable/std/primitive.f32.html#method.ceil)
- [`f32::trunc`]
(https://doc.rust-lang.org/stable/std/primitive.f32.html#method.trunc)
- [`f32::fract`]
(https://doc.rust-lang.org/stable/std/primitive.f32.html#method.fract)
(https://doc.rust-lang.org/stable/std/primitive.f32.html#method.fract)
- [`f32::round`]
(https://doc.rust-lang.org/stable/std/primitive.f32.html#method.round)
- [`f32::round_ties_even`]
(https://doc.rust-lang.org/stable/std/primitive.f32.html#method.round_ties_even)
- [`f64::floor`]
(https://doc.rust-lang.org/stable/std/primitive.f64.html#method.floor)
- [`f64::ceil`]
(https://doc.rust-lang.org/stable/std/primitive.f64.html#method.ceil)
- [`f64::trunc`]
(https://doc.rust-lang.org/stable/std/primitive.f64.html#method.trunc)
- [`f64::fract`]
(https://doc.rust-lang.org/stable/std/primitive.f64.html#method.fract)
- [`f64::round`]
(https://doc.rust-lang.org/stable/std/primitive.f64.html#method.round)
- [`f64::round_ties_even`]
(https://doc.rust-lang.org/stable/std/primitive.f64.html#method.round_ties_even)
Cargo
-----
- [Add `http.proxy-cainfo` config for proxy certs]
(rust-lang/cargo#15374)
- [Use `gix` for `cargo package`]
(rust-lang/cargo#15534)
- [feat(publish): Stabilize multi-package publishing]
(rust-lang/cargo#15636)
Rustdoc
-----
- [Add ways to collapse all impl blocks]
(rust-lang/rust#141663). Previously the
"Summary" button and "-" keyboard shortcut would never collapse
`impl` blocks, now they do when shift is held
- [Display unsafe attributes with `unsafe()` wrappers]
(rust-lang/rust#143662)
Compatibility Notes
-------------------
- [Use `lld` by default on `x86_64-unknown-linux-gnu`]
(rust-lang/rust#140525).
See also <https://blog.rust-lang.org/2025/09/01/rust-lld-on-1.90.0-stable/>.
- [Make `core::iter::Fuse`'s `Default` impl construct `I::default()`
internally as promised in the docs instead of always being empty]
(rust-lang/rust#140985)
- [Set `MSG_NOSIGNAL` for `UnixStream`]
(rust-lang/rust#140005) This may change
program behavior but results in the same behavior as other
primitives (e.g., stdout, network sockets). Programs relying on
signals to terminate them should update handling of sockets to
handle errors on write by exiting.
- [On Unix `std::env::home_dir` will use the fallback if the `HOME`
environment variable is empty]
(rust-lang/rust#141840)
- We now [reject unsupported `extern "{abi}"`s consistently in all
positions] (rust-lang/rust#142134). This
primarily affects the use of implementing traits on an `extern
"{abi}"` function pointer, like `extern "stdcall" fn()`, on a
platform that doesn't support that, like aarch64-unknown-linux-gnu.
Direct usage of these unsupported ABI strings by declaring or
defining functions was already rejected, so this is only a change
for consistency.
- [const-eval: error when initializing a static writes to that static]
(rust-lang/rust#143084)
- [Check that the `proc_macro_derive` macro has correct arguments
when applied to the crate root]
(rust-lang/rust#143607)
Version 1.89.0 (2025-08-07)
==========================
Language
--------
- [Stabilize explicitly inferred const arguments (`feature(generic_arg_infer)`)]
(rust-lang/rust#141610)
- [Add a warn-by-default `mismatched_lifetime_syntaxes` lint.]
(rust-lang/rust#138677)
This lint detects when the same lifetime is referred to by
different syntax categories between function arguments and return
values, which can be confusing to read, especially in unsafe
code. This lint supersedes the warn-by-default `elided_named_lifetimes`
lint.
- [Expand `unpredictable_function_pointer_comparisons` to also lint
on function pointer comparisons in external macros]
(rust-lang/rust#134536)
- [Make the `dangerous_implicit_autorefs` lint deny-by-default]
(rust-lang/rust#141661)
- [Stabilize the avx512 target features]
(rust-lang/rust#138940)
- [Stabilize `kl` and `widekl` target features for x86]
(rust-lang/rust#140766)
- [Stabilize `sha512`, `sm3` and `sm4` target features for x86]
(rust-lang/rust#140767)
- [Stabilize LoongArch target features `f`, `d`, `frecipe`, `lasx`,
`lbt`, `lsx`, and `lvz`]
(rust-lang/rust#135015)
- [Remove `i128` and `u128` from `improper_ctypes_definitions`]
(rust-lang/rust#137306)
- [Stabilize `repr128` (`#[repr(u128)]`, `#[repr(i128)]`)]
(rust-lang/rust#138285)
- [Allow `#![doc(test(attr(..)))]` everywhere]
(rust-lang/rust#140560)
- [Extend temporary lifetime extension to also go through tuple
struct and tuple variant constructors]
(rust-lang/rust#140593)
Compiler
--------
- [Default to non-leaf frame pointers on aarch64-linux]
(rust-lang/rust#140832)
- [Enable non-leaf frame pointers for Arm64EC Windows]
(rust-lang/rust#140862)
- [Set Apple frame pointers by architecture]
(rust-lang/rust#141797)
Platform Support
----------------
- [Add new Tier-3 targets `loongarch32-unknown-none` and
`loongarch32-unknown-none-softfloat`]
(rust-lang/rust#142053)
Refer to Rust's [platform support page][platform-support-doc]
for more information on Rust's tiered platform support.
[platform-support-doc]: https://doc.rust-lang.org/rustc/platform-support.html
Libraries
---------
- [Specify the base path for `file!`]
(rust-lang/rust#134442)
- [Allow storing `format_args!()` in a variable]
(rust-lang/rust#140748)
- [Add `#[must_use]` to `[T; N]::map`]
(rust-lang/rust#140957)
- [Implement `DerefMut` for `Lazy{Cell,Lock}`]
(rust-lang/rust#129334)
- [Implement `Default` for `array::IntoIter`]
(rust-lang/rust#141574)
- [Implement `Clone` for `slice::ChunkBy`]
(rust-lang/rust#138016)
- [Implement `io::Seek` for `io::Take`]
(rust-lang/rust#138023)
Stabilized APIs
---------------
- [`NonZero<char>`]
(https://doc.rust-lang.org/stable/std/num/struct.NonZero.html)
- Many intrinsics for x86, not enumerated here
- [AVX512 intrinsics](rust-lang/rust#111137)
- [`SHA512`, `SM3` and `SM4` intrinsics]
(rust-lang/rust#126624)
- [`File::lock`]
(https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.lock)
- [`File::lock_shared`]
(https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.lock_shared)
- [`File::try_lock`]
(https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.try_lock)
- [`File::try_lock_shared`]
(https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.try_lock_shared)
- [`File::unlock`]
(https://doc.rust-lang.org/stable/std/fs/struct.File.html#method.unlock)
- [`NonNull::from_ref`]
(https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.from_ref)
- [`NonNull::from_mut`]
(https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.from_mut)
- [`NonNull::without_provenance`]
(https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.without_provenance)
- [`NonNull::with_exposed_provenance`]
(https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.with_exposed_provenance)
- [`NonNull::expose_provenance`]
(https://doc.rust-lang.org/stable/std/ptr/struct.NonNull.html#method.expose_provenance)
- [`OsString::leak`]
(https://doc.rust-lang.org/stable/std/ffi/struct.OsString.html#method.leak)
- [`PathBuf::leak`]
(https://doc.rust-lang.org/stable/std/path/struct.PathBuf.html#method.leak)
- [`Result::flatten`]
(https://doc.rust-lang.org/stable/std/result/enum.Result.html#method.flatten)
- [`std::os::linux::net::TcpStreamExt::quickack`]
(https://doc.rust-lang.org/stable/std/os/linux/net/trait.TcpStreamExt.html#tymethod.quickack)
- [`std::os::linux::net::TcpStreamExt::set_quickack`]
(https://doc.rust-lang.org/stable/std/os/linux/net/trait.TcpStreamExt.html#tymethod.set_quickack)
These previously stable APIs are now stable in const contexts:
- [`<[T; N]>::as_mut_slice`]
(https://doc.rust-lang.org/stable/std/primitive.array.html#method.as_mut_slice)
- [`<[u8]>::eq_ignore_ascii_case`]
(https://doc.rust-lang.org/stable/std/primitive.slice.html#impl-%5Bu8%5D/method.eq_ignore_ascii_case)
- [`str::eq_ignore_ascii_case`]
(https://doc.rust-lang.org/stable/std/primitive.str.html#impl-str/method.eq_ignore_ascii_case)
Cargo
-----
- [`cargo fix` and `cargo clippy --fix` now default to the same
Cargo target selection as other build commands.]
(rust-lang/cargo#15192) Previously it
would apply to all targets (like binaries, examples, tests, etc.).
The `--edition` flag still applies to all targets.
- [Stabilize doctest-xcompile.]
(rust-lang/cargo#15462) Doctests are
now tested when cross-compiling. Just like other tests, it will
use the [`runner` setting]
(https://doc.rust-lang.org/cargo/reference/config.html#targettriplerunner)
to run the tests. If you need to disable tests for a target, you
can use the [ignore doctest attribute]
(https://doc.rust-lang.org/rustdoc/write-documentation/documentation-tests.html#ignoring-targets)
to specify the targets to ignore.
Rustdoc
-----
- [On mobile, make the sidebar full width and linewrap]
(rust-lang/rust#139831). This makes long
section and item names much easier to deal with on mobile.
Compatibility Notes
-------------------
- [Make `missing_fragment_specifier` an unconditional error]
(rust-lang/rust#128425)
- [Enabling the `neon` target feature on `aarch64-unknown-none-softfloat`
causes a warning]
(rust-lang/rust#135160) because mixing
code with and without that target feature is not properly supported
by LLVM
- [Sized Hierarchy: Part I](rust-lang/rust#137944)
- Introduces a small breaking change affecting `?Sized` bounds
on impls on recursive types which contain associated type
projections. It is not expected to affect any existing published
crates. Can be fixed by refactoring the involved types or opting
into the `sized_hierarchy` unstable feature. See the [FCP report]
(rust-lang/rust#137944 (comment))
for a code example.
- The warn-by-default `elided_named_lifetimes` lint is [superseded
by the warn-by-default `mismatched_lifetime_syntaxes` lint.]
(rust-lang/rust#138677)
- [Error on recursive opaque types earlier in the type checker]
(rust-lang/rust#139419)
- [Type inference side effects from requiring element types of
array repeat expressions are `Copy` are now only available at the
end of type checking]
(rust-lang/rust#139635)
- [The deprecated accidentally-stable
`std::intrinsics::{copy,copy_nonoverlapping,write_bytes}` are now
proper intrinsics]
(rust-lang/rust#139916). There are no
debug assertions guarding against UB, and they cannot be coerced
to function pointers.
- [Remove long-deprecated `std::intrinsics::drop_in_place`]
(rust-lang/rust#140151)
- [Make well-formedness predicates no longer coinductive]
(rust-lang/rust#140208)
- [Remove hack when checking impl method compatibility]
(rust-lang/rust#140557)
- [Remove unnecessary type inference due to built-in trait object impls]
(rust-lang/rust#141352)
- [Lint against "stdcall", "fastcall", and "cdecl" on non-x86-32 targets]
(rust-lang/rust#141435)
- [Future incompatibility warnings relating to the never type (`!`)
are now reported in dependencies]
(rust-lang/rust#141937)
- [Ensure `std::ptr::copy_*` intrinsics also perform the static
self-init checks]
(rust-lang/rust#142575)
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.
- [Correctly un-remap compiler sources paths with the `rustc-dev` component]
(rust-lang/rust#142377)
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-CIArea: Our Github Actions CIA-testsuiteArea: The testsuite used to check the correctness of rustcbeta-acceptedAccepted for backporting to the compiler in the beta channel.O-macosOperating system: macOSrelnotesMarks issues that should be documented in the release notes of the next release.S-waiting-on-borsStatus: Waiting on bors to run and complete tests. Bors will change the label on completion.T-bootstrapRelevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap)T-compilerRelevant to the compiler team, which will review and decide on the PR/issue.T-infraRelevant to the infrastructure team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

10 participants

@shepmaster@rustbot@jieyouxu@rust-log-analyzer@bors@madsmtm@OBITOONDEADO1MZ@cuviper@ehuss@jdno