Skip to content

Ensure Send/Sync is not implemented for std::env::Vars{,Os} - #155153

Merged
rust-bors[bot] merged 1 commit into
rust-lang:mainfrom
Mark-Simulacrum:env-vars
Jun 11, 2026
Merged

Ensure Send/Sync is not implemented for std::env::Vars{,Os}#155153
rust-bors[bot] merged 1 commit into
rust-lang:mainfrom
Mark-Simulacrum:env-vars

Conversation

@Mark-Simulacrum

@Mark-SimulacrumMark-Simulacrum commented Apr 11, 2026

Copy link
Copy Markdown
Member

On some platforms, it looks like these are not currently Send/Sync. We have a negative impl in env/common.rs. This is a breaking change on a bunch of targets, but it makes it less likely that someone unintentionally/accidentally depends on this. This is a potentially partial list but should be fairly complete. These are all platforms where these previously were unsupported, so this is relatively unlikely to actually break them.

aarch64-unknown-none, aarch64-unknown-none-softfloat, armv7a-none-eabi, armv7a-none-eabihf, armv7r-none-eabi, armv7r-none-eabihf, armv8r-none-eabihf, loongarch64-unknown-none,
loongarch64-unknown-none-softfloat, nvptx64-nvidia-cuda, riscv32i-unknown-none-elf, riscv32im-unknown-none-elf, riscv32imac-unknown-none-elf, riscv32imafc-unknown-none-elf, riscv32imc-unknown-none-elf, riscv64gc-unknown-none-elf, riscv64imac-unknown-none-elf, s390x-unknown-none-softfloat, thumbv6m-none-eabi, thumbv7a-none-eabi, thumbv7a-none-eabihf, thumbv7em-none-eabi, thumbv7em-none-eabihf, thumbv7m-none-eabi, thumbv7r-none-eabi, thumbv7r-none-eabihf, thumbv8m.base-none-eabi, thumbv8m.main-none-eabi, thumbv8m.main-none-eabihf, thumbv8r-none-eabihf, wasm32-unknown-unknown, wasm32v1-none, x86_64-unknown-none

cc #154517

On some platforms, it looks like these are not currently Send/Sync. We
have a negative impl in env/common.rs. This is a breaking change on a
bunch of targets, but it makes it less likely that someone
unintentionally/accidentally depends on this. This is a potentially
partial list but should be fairly complete:
aarch64-unknown-none, aarch64-unknown-none-softfloat, armv7a-none-eabi,
armv7a-none-eabihf, armv7r-none-eabi, armv7r-none-eabihf,
armv8r-none-eabihf, loongarch64-unknown-none,
loongarch64-unknown-none-softfloat, nvptx64-nvidia-cuda,
riscv32i-unknown-none-elf, riscv32im-unknown-none-elf,
riscv32imac-unknown-none-elf, riscv32imafc-unknown-none-elf,
riscv32imc-unknown-none-elf, riscv64gc-unknown-none-elf,
riscv64imac-unknown-none-elf, s390x-unknown-none-softfloat,
thumbv6m-none-eabi, thumbv7a-none-eabi, thumbv7a-none-eabihf,
thumbv7em-none-eabi, thumbv7em-none-eabihf, thumbv7m-none-eabi,
thumbv7r-none-eabi, thumbv7r-none-eabihf, thumbv8m.base-none-eabi,
thumbv8m.main-none-eabi, thumbv8m.main-none-eabihf,
thumbv8r-none-eabihf, wasm32-unknown-unknown, wasm32v1-none,
x86_64-unknown-none
@rustbotrustbot added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. T-libs Relevant to the library team, which will review and decide on the PR/issue. labels Apr 11, 2026
@Mark-SimulacrumMark-Simulacrum added T-libs-api [DEPRECATED; DO NOT USE] needs-fcp This change is insta-stable, or significant enough to need a team FCP to proceed. S-waiting-on-t-libs-api [DEPRECATED; DO NOT USE] and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. T-libs Relevant to the library team, which will review and decide on the PR/issue. labels Apr 11, 2026
@Mark-Simulacrum
Mark-Simulacrum marked this pull request as ready for review April 11, 2026 14:05
@rustbot

Copy link
Copy Markdown
Collaborator

@Mark-Simulacrum: no appropriate reviewer found, use r? to override

@rustbotrustbot added the S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. label Apr 11, 2026
@Amanieu

Copy link
Copy Markdown
Member

@rfcbot merge libs-api

@rust-rfcbot

rust-rfcbot commented Apr 14, 2026

Copy link
Copy Markdown
Collaborator

Team member @Amanieu has proposed to merge this. The next step is review by the rest of the tagged team members:

No concerns currently listed.

Once a majority of reviewers approve (and at most 2 approvals are outstanding), this will enter its final comment period. If you spot a major issue that hasn't been raised at any point in this process, please speak up!

See this document for info about what commands tagged team members can give me.

@rust-rfcbotrust-rfcbot added proposed-final-comment-period Proposed to merge/close by relevant subteam, see T-<team> label. Will enter FCP once signed off. disposition-merge This issue / PR is in PFCP or FCP with a disposition to merge it. labels Apr 14, 2026
@Mark-Simulacrum

Copy link
Copy Markdown
MemberAuthor

Just to clarify @nia-e since I see in the meeting notes, in case it affects anyone's FCP box:

Nia: This one is trickier because it's removing a negative impl.

This is not removing a negative impl, it's adding that negative impl to all targets by moving it out of sys/ and into the public type's API.

@rust-rfcbotrust-rfcbot added final-comment-period In the final comment period and will be merged soon unless new substantive objections are raised. and removed proposed-final-comment-period Proposed to merge/close by relevant subteam, see T-<team> label. Will enter FCP once signed off. labels May 3, 2026
@rust-rfcbot

Copy link
Copy Markdown
Collaborator

🔔 This is now entering its final comment period, as per the review above. 🔔

@AmanieuAmanieu removed the S-waiting-on-t-libs-api [DEPRECATED; DO NOT USE] label May 5, 2026
@rust-rfcbotrust-rfcbot added finished-final-comment-period The final comment period is finished for this PR / Issue. and removed final-comment-period In the final comment period and will be merged soon unless new substantive objections are raised. labels May 13, 2026
@rust-rfcbot

Copy link
Copy Markdown
Collaborator

The final comment period, with a disposition to merge, as per the review above, is now complete.

As the automated representative of the governance process, I would like to thank the author for their work and everyone else who contributed.

@Mark-Simulacrum

Copy link
Copy Markdown
MemberAuthor

r? libs

@rustbotrustbot added the T-libs Relevant to the library team, which will review and decide on the PR/issue. label Jun 11, 2026
@clarfonthey

Copy link
Copy Markdown
Contributor

Code review: yes, looks like code

@bors r+ rollup

@rust-bors

rust-borsBot commented Jun 11, 2026

Copy link
Copy Markdown
Contributor

📌 Commit 603b80f has been approved by clarfonthey

It is now in the queue for this repository.

@rust-borsrust-borsBot added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Jun 11, 2026
jhpratt added a commit to jhpratt/rust that referenced this pull request Jun 11, 2026
…nthey
Ensure Send/Sync is not implemented for std::env::Vars{,Os}
On some platforms, it looks like these are not currently Send/Sync. We have a negative impl in env/common.rs. This is a breaking change on a bunch of targets, but it makes it less likely that someone unintentionally/accidentally depends on this. This is a potentially partial list but should be fairly complete. These are all platforms where these previously were [unsupported](https://github.com/rust-lang/rust/blob/main/library/std/src/sys/env/unsupported.rs), so this is relatively unlikely to actually break them.
aarch64-unknown-none, aarch64-unknown-none-softfloat, armv7a-none-eabi, armv7a-none-eabihf, armv7r-none-eabi, armv7r-none-eabihf, armv8r-none-eabihf, loongarch64-unknown-none,
loongarch64-unknown-none-softfloat, nvptx64-nvidia-cuda, riscv32i-unknown-none-elf, riscv32im-unknown-none-elf, riscv32imac-unknown-none-elf, riscv32imafc-unknown-none-elf, riscv32imc-unknown-none-elf, riscv64gc-unknown-none-elf, riscv64imac-unknown-none-elf, s390x-unknown-none-softfloat, thumbv6m-none-eabi, thumbv7a-none-eabi, thumbv7a-none-eabihf, thumbv7em-none-eabi, thumbv7em-none-eabihf, thumbv7m-none-eabi, thumbv7r-none-eabi, thumbv7r-none-eabihf, thumbv8m.base-none-eabi, thumbv8m.main-none-eabi, thumbv8m.main-none-eabihf, thumbv8r-none-eabihf, wasm32-unknown-unknown, wasm32v1-none, x86_64-unknown-none
cc rust-lang#154517
jhpratt added a commit to jhpratt/rust that referenced this pull request Jun 11, 2026
…nthey
Ensure Send/Sync is not implemented for std::env::Vars{,Os}
On some platforms, it looks like these are not currently Send/Sync. We have a negative impl in env/common.rs. This is a breaking change on a bunch of targets, but it makes it less likely that someone unintentionally/accidentally depends on this. This is a potentially partial list but should be fairly complete. These are all platforms where these previously were [unsupported](https://github.com/rust-lang/rust/blob/main/library/std/src/sys/env/unsupported.rs), so this is relatively unlikely to actually break them.
aarch64-unknown-none, aarch64-unknown-none-softfloat, armv7a-none-eabi, armv7a-none-eabihf, armv7r-none-eabi, armv7r-none-eabihf, armv8r-none-eabihf, loongarch64-unknown-none,
loongarch64-unknown-none-softfloat, nvptx64-nvidia-cuda, riscv32i-unknown-none-elf, riscv32im-unknown-none-elf, riscv32imac-unknown-none-elf, riscv32imafc-unknown-none-elf, riscv32imc-unknown-none-elf, riscv64gc-unknown-none-elf, riscv64imac-unknown-none-elf, s390x-unknown-none-softfloat, thumbv6m-none-eabi, thumbv7a-none-eabi, thumbv7a-none-eabihf, thumbv7em-none-eabi, thumbv7em-none-eabihf, thumbv7m-none-eabi, thumbv7r-none-eabi, thumbv7r-none-eabihf, thumbv8m.base-none-eabi, thumbv8m.main-none-eabi, thumbv8m.main-none-eabihf, thumbv8r-none-eabihf, wasm32-unknown-unknown, wasm32v1-none, x86_64-unknown-none
cc rust-lang#154517
jhpratt added a commit to jhpratt/rust that referenced this pull request Jun 11, 2026
…nthey
Ensure Send/Sync is not implemented for std::env::Vars{,Os}
On some platforms, it looks like these are not currently Send/Sync. We have a negative impl in env/common.rs. This is a breaking change on a bunch of targets, but it makes it less likely that someone unintentionally/accidentally depends on this. This is a potentially partial list but should be fairly complete. These are all platforms where these previously were [unsupported](https://github.com/rust-lang/rust/blob/main/library/std/src/sys/env/unsupported.rs), so this is relatively unlikely to actually break them.
aarch64-unknown-none, aarch64-unknown-none-softfloat, armv7a-none-eabi, armv7a-none-eabihf, armv7r-none-eabi, armv7r-none-eabihf, armv8r-none-eabihf, loongarch64-unknown-none,
loongarch64-unknown-none-softfloat, nvptx64-nvidia-cuda, riscv32i-unknown-none-elf, riscv32im-unknown-none-elf, riscv32imac-unknown-none-elf, riscv32imafc-unknown-none-elf, riscv32imc-unknown-none-elf, riscv64gc-unknown-none-elf, riscv64imac-unknown-none-elf, s390x-unknown-none-softfloat, thumbv6m-none-eabi, thumbv7a-none-eabi, thumbv7a-none-eabihf, thumbv7em-none-eabi, thumbv7em-none-eabihf, thumbv7m-none-eabi, thumbv7r-none-eabi, thumbv7r-none-eabihf, thumbv8m.base-none-eabi, thumbv8m.main-none-eabi, thumbv8m.main-none-eabihf, thumbv8r-none-eabihf, wasm32-unknown-unknown, wasm32v1-none, x86_64-unknown-none
cc rust-lang#154517
@jhprattjhpratt mentioned this pull request Jun 11, 2026
jhpratt added a commit to jhpratt/rust that referenced this pull request Jun 11, 2026
…nthey
Ensure Send/Sync is not implemented for std::env::Vars{,Os}
On some platforms, it looks like these are not currently Send/Sync. We have a negative impl in env/common.rs. This is a breaking change on a bunch of targets, but it makes it less likely that someone unintentionally/accidentally depends on this. This is a potentially partial list but should be fairly complete. These are all platforms where these previously were [unsupported](https://github.com/rust-lang/rust/blob/main/library/std/src/sys/env/unsupported.rs), so this is relatively unlikely to actually break them.
aarch64-unknown-none, aarch64-unknown-none-softfloat, armv7a-none-eabi, armv7a-none-eabihf, armv7r-none-eabi, armv7r-none-eabihf, armv8r-none-eabihf, loongarch64-unknown-none,
loongarch64-unknown-none-softfloat, nvptx64-nvidia-cuda, riscv32i-unknown-none-elf, riscv32im-unknown-none-elf, riscv32imac-unknown-none-elf, riscv32imafc-unknown-none-elf, riscv32imc-unknown-none-elf, riscv64gc-unknown-none-elf, riscv64imac-unknown-none-elf, s390x-unknown-none-softfloat, thumbv6m-none-eabi, thumbv7a-none-eabi, thumbv7a-none-eabihf, thumbv7em-none-eabi, thumbv7em-none-eabihf, thumbv7m-none-eabi, thumbv7r-none-eabi, thumbv7r-none-eabihf, thumbv8m.base-none-eabi, thumbv8m.main-none-eabi, thumbv8m.main-none-eabihf, thumbv8r-none-eabihf, wasm32-unknown-unknown, wasm32v1-none, x86_64-unknown-none
cc rust-lang#154517
@jhprattjhpratt mentioned this pull request Jun 11, 2026
rust-borsBot pushed a commit that referenced this pull request Jun 11, 2026
Rollup of 31 pull requests
Successful merges:
- #141030 (Expand free alias types during variance computation)
- #154853 (mgca: Register `ConstArgHasType` when normalizing projection consts)
- #155527 (Replace printables table with `unicode_data.rs` tables)
- #156629 (Stabilize `core::range::{legacy, RangeFull, RangeTo}`)
- #157280 (traits: Allow escaping self types in ExistentialTraitRef::with_self_ty)
- #157282 (Fix post-monomorphization error note race in the parallel frontend)
- #157352 (Make the retained dep graph deterministic under the parallel frontend)
- #157601 (Emit error for unused target expression in glob and list delegations)
- #157611 (Update `browser-ui-test` version to `0.24.0`)
- #157620 (Add a strategy FnMut to inject behavior into the flush cycle)
- #157645 (Windows TLS - Only register the `atexit` hook when `cleanup` can be unloaded)
- #157646 (Keep rename-imported main alive in dead-code analysis under `--test`)
- #157647 (Start using comptime for reflection intrinsics and their wrapper functions)
- #157719 (resolve: Partially revert "Remove a special case for dummy imports")
- #155153 (Ensure Send/Sync is not implemented for std::env::Vars{,Os})
- #155198 (fix(mgca): Allow specifying generic args (of enum) on enum itself in unit & tuple variant constructions in (direct) const args)
- #155323 (refactor `TypeRelativePath::AssocItem` to use `AliasTerm`)
- #156497 (fix-155516: Don't suggest wrong unwrap expect)
- #156583 (Support defaults for static EIIs)
- #157013 (Ensure inferred let pattern types are well-formed)
- #157196 (Only suggest reborrowing a moved value where the reborrow is valid)
- #157230 (borrowck: avoid ICE describing fields on generic params)
- #157288 (platform support: add SNaN erratum to MIPS targets)
- #157330 (remove `IsTypeConst` from `hir::TraitItemKind`)
- #157350 (compiletest: ignore SVG `y` offset in by-lines comparison)
- #157355 (Add `or_try_*` variants for `HashMap` and `BTreeMap` Entry APIs)
- #157577 (Fix parser error recovery treating 'dyn' as a strict keyword in Rust 2015 when used in `dyn + dyn`)
- #157670 (Rename `errors.rs` file to `diagnostics.rs` (4/N))
- #157691 (Move symbol hiding code to a new file)
- #157700 (Rename `errors.rs` file to `diagnostics.rs` (5/N))
- #157703 (Fix doc link to Instant sub in saturating caveat)
Failed merges:
- #157699 (Arg splat experiment - hir FnDecl impl)
@rust-bors
rust-borsBot merged commit 5bba0b9 into rust-lang:mainJun 11, 2026
11 checks passed
@rustbotrustbot added this to the 1.98.0 milestone Jun 11, 2026
rust-timer added a commit that referenced this pull request Jun 11, 2026
Rollup merge of #155153 - Mark-Simulacrum:env-vars, r=clarfonthey
Ensure Send/Sync is not implemented for std::env::Vars{,Os}
On some platforms, it looks like these are not currently Send/Sync. We have a negative impl in env/common.rs. This is a breaking change on a bunch of targets, but it makes it less likely that someone unintentionally/accidentally depends on this. This is a potentially partial list but should be fairly complete. These are all platforms where these previously were [unsupported](https://github.com/rust-lang/rust/blob/main/library/std/src/sys/env/unsupported.rs), so this is relatively unlikely to actually break them.
aarch64-unknown-none, aarch64-unknown-none-softfloat, armv7a-none-eabi, armv7a-none-eabihf, armv7r-none-eabi, armv7r-none-eabihf, armv8r-none-eabihf, loongarch64-unknown-none,
loongarch64-unknown-none-softfloat, nvptx64-nvidia-cuda, riscv32i-unknown-none-elf, riscv32im-unknown-none-elf, riscv32imac-unknown-none-elf, riscv32imafc-unknown-none-elf, riscv32imc-unknown-none-elf, riscv64gc-unknown-none-elf, riscv64imac-unknown-none-elf, s390x-unknown-none-softfloat, thumbv6m-none-eabi, thumbv7a-none-eabi, thumbv7a-none-eabihf, thumbv7em-none-eabi, thumbv7em-none-eabihf, thumbv7m-none-eabi, thumbv7r-none-eabi, thumbv7r-none-eabihf, thumbv8m.base-none-eabi, thumbv8m.main-none-eabi, thumbv8m.main-none-eabihf, thumbv8r-none-eabihf, wasm32-unknown-unknown, wasm32v1-none, x86_64-unknown-none
cc #154517
LaneAsade pushed a commit to LaneAsade/rust that referenced this pull request Jun 11, 2026
Rollup of 31 pull requests
Successful merges:
- rust-lang#141030 (Expand free alias types during variance computation)
- rust-lang#154853 (mgca: Register `ConstArgHasType` when normalizing projection consts)
- rust-lang#155527 (Replace printables table with `unicode_data.rs` tables)
- rust-lang#156629 (Stabilize `core::range::{legacy, RangeFull, RangeTo}`)
- rust-lang#157280 (traits: Allow escaping self types in ExistentialTraitRef::with_self_ty)
- rust-lang#157282 (Fix post-monomorphization error note race in the parallel frontend)
- rust-lang#157352 (Make the retained dep graph deterministic under the parallel frontend)
- rust-lang#157601 (Emit error for unused target expression in glob and list delegations)
- rust-lang#157611 (Update `browser-ui-test` version to `0.24.0`)
- rust-lang#157620 (Add a strategy FnMut to inject behavior into the flush cycle)
- rust-lang#157645 (Windows TLS - Only register the `atexit` hook when `cleanup` can be unloaded)
- rust-lang#157646 (Keep rename-imported main alive in dead-code analysis under `--test`)
- rust-lang#157647 (Start using comptime for reflection intrinsics and their wrapper functions)
- rust-lang#157719 (resolve: Partially revert "Remove a special case for dummy imports")
- rust-lang#155153 (Ensure Send/Sync is not implemented for std::env::Vars{,Os})
- rust-lang#155198 (fix(mgca): Allow specifying generic args (of enum) on enum itself in unit & tuple variant constructions in (direct) const args)
- rust-lang#155323 (refactor `TypeRelativePath::AssocItem` to use `AliasTerm`)
- rust-lang#156497 (fix-155516: Don't suggest wrong unwrap expect)
- rust-lang#156583 (Support defaults for static EIIs)
- rust-lang#157013 (Ensure inferred let pattern types are well-formed)
- rust-lang#157196 (Only suggest reborrowing a moved value where the reborrow is valid)
- rust-lang#157230 (borrowck: avoid ICE describing fields on generic params)
- rust-lang#157288 (platform support: add SNaN erratum to MIPS targets)
- rust-lang#157330 (remove `IsTypeConst` from `hir::TraitItemKind`)
- rust-lang#157350 (compiletest: ignore SVG `y` offset in by-lines comparison)
- rust-lang#157355 (Add `or_try_*` variants for `HashMap` and `BTreeMap` Entry APIs)
- rust-lang#157577 (Fix parser error recovery treating 'dyn' as a strict keyword in Rust 2015 when used in `dyn + dyn`)
- rust-lang#157670 (Rename `errors.rs` file to `diagnostics.rs` (4/N))
- rust-lang#157691 (Move symbol hiding code to a new file)
- rust-lang#157700 (Rename `errors.rs` file to `diagnostics.rs` (5/N))
- rust-lang#157703 (Fix doc link to Instant sub in saturating caveat)
Failed merges:
- rust-lang#157699 (Arg splat experiment - hir FnDecl impl)
LaneAsade pushed a commit to LaneAsade/rust that referenced this pull request Jun 11, 2026
Rollup of 31 pull requests
Successful merges:
- rust-lang#141030 (Expand free alias types during variance computation)
- rust-lang#154853 (mgca: Register `ConstArgHasType` when normalizing projection consts)
- rust-lang#155527 (Replace printables table with `unicode_data.rs` tables)
- rust-lang#156629 (Stabilize `core::range::{legacy, RangeFull, RangeTo}`)
- rust-lang#157280 (traits: Allow escaping self types in ExistentialTraitRef::with_self_ty)
- rust-lang#157282 (Fix post-monomorphization error note race in the parallel frontend)
- rust-lang#157352 (Make the retained dep graph deterministic under the parallel frontend)
- rust-lang#157601 (Emit error for unused target expression in glob and list delegations)
- rust-lang#157611 (Update `browser-ui-test` version to `0.24.0`)
- rust-lang#157620 (Add a strategy FnMut to inject behavior into the flush cycle)
- rust-lang#157645 (Windows TLS - Only register the `atexit` hook when `cleanup` can be unloaded)
- rust-lang#157646 (Keep rename-imported main alive in dead-code analysis under `--test`)
- rust-lang#157647 (Start using comptime for reflection intrinsics and their wrapper functions)
- rust-lang#157719 (resolve: Partially revert "Remove a special case for dummy imports")
- rust-lang#155153 (Ensure Send/Sync is not implemented for std::env::Vars{,Os})
- rust-lang#155198 (fix(mgca): Allow specifying generic args (of enum) on enum itself in unit & tuple variant constructions in (direct) const args)
- rust-lang#155323 (refactor `TypeRelativePath::AssocItem` to use `AliasTerm`)
- rust-lang#156497 (fix-155516: Don't suggest wrong unwrap expect)
- rust-lang#156583 (Support defaults for static EIIs)
- rust-lang#157013 (Ensure inferred let pattern types are well-formed)
- rust-lang#157196 (Only suggest reborrowing a moved value where the reborrow is valid)
- rust-lang#157230 (borrowck: avoid ICE describing fields on generic params)
- rust-lang#157288 (platform support: add SNaN erratum to MIPS targets)
- rust-lang#157330 (remove `IsTypeConst` from `hir::TraitItemKind`)
- rust-lang#157350 (compiletest: ignore SVG `y` offset in by-lines comparison)
- rust-lang#157355 (Add `or_try_*` variants for `HashMap` and `BTreeMap` Entry APIs)
- rust-lang#157577 (Fix parser error recovery treating 'dyn' as a strict keyword in Rust 2015 when used in `dyn + dyn`)
- rust-lang#157670 (Rename `errors.rs` file to `diagnostics.rs` (4/N))
- rust-lang#157691 (Move symbol hiding code to a new file)
- rust-lang#157700 (Rename `errors.rs` file to `diagnostics.rs` (5/N))
- rust-lang#157703 (Fix doc link to Instant sub in saturating caveat)
Failed merges:
- rust-lang#157699 (Arg splat experiment - hir FnDecl impl)
flip1995 pushed a commit to flip1995/rust-clippy that referenced this pull request Aug 17, 2026
Rollup of 31 pull requests
Successful merges:
- rust-lang/rust#141030 (Expand free alias types during variance computation)
- rust-lang/rust#154853 (mgca: Register `ConstArgHasType` when normalizing projection consts)
- rust-lang/rust#155527 (Replace printables table with `unicode_data.rs` tables)
- rust-lang/rust#156629 (Stabilize `core::range::{legacy, RangeFull, RangeTo}`)
- rust-lang/rust#157280 (traits: Allow escaping self types in ExistentialTraitRef::with_self_ty)
- rust-lang/rust#157282 (Fix post-monomorphization error note race in the parallel frontend)
- rust-lang/rust#157352 (Make the retained dep graph deterministic under the parallel frontend)
- rust-lang/rust#157601 (Emit error for unused target expression in glob and list delegations)
- rust-lang/rust#157611 (Update `browser-ui-test` version to `0.24.0`)
- rust-lang/rust#157620 (Add a strategy FnMut to inject behavior into the flush cycle)
- rust-lang/rust#157645 (Windows TLS - Only register the `atexit` hook when `cleanup` can be unloaded)
- rust-lang/rust#157646 (Keep rename-imported main alive in dead-code analysis under `--test`)
- rust-lang/rust#157647 (Start using comptime for reflection intrinsics and their wrapper functions)
- rust-lang/rust#157719 (resolve: Partially revert "Remove a special case for dummy imports")
- rust-lang/rust#155153 (Ensure Send/Sync is not implemented for std::env::Vars{,Os})
- rust-lang/rust#155198 (fix(mgca): Allow specifying generic args (of enum) on enum itself in unit & tuple variant constructions in (direct) const args)
- rust-lang/rust#155323 (refactor `TypeRelativePath::AssocItem` to use `AliasTerm`)
- rust-lang/rust#156497 (fix-155516: Don't suggest wrong unwrap expect)
- rust-lang/rust#156583 (Support defaults for static EIIs)
- rust-lang/rust#157013 (Ensure inferred let pattern types are well-formed)
- rust-lang/rust#157196 (Only suggest reborrowing a moved value where the reborrow is valid)
- rust-lang/rust#157230 (borrowck: avoid ICE describing fields on generic params)
- rust-lang/rust#157288 (platform support: add SNaN erratum to MIPS targets)
- rust-lang/rust#157330 (remove `IsTypeConst` from `hir::TraitItemKind`)
- rust-lang/rust#157350 (compiletest: ignore SVG `y` offset in by-lines comparison)
- rust-lang/rust#157355 (Add `or_try_*` variants for `HashMap` and `BTreeMap` Entry APIs)
- rust-lang/rust#157577 (Fix parser error recovery treating 'dyn' as a strict keyword in Rust 2015 when used in `dyn + dyn`)
- rust-lang/rust#157670 (Rename `errors.rs` file to `diagnostics.rs` (4/N))
- rust-lang/rust#157691 (Move symbol hiding code to a new file)
- rust-lang/rust#157700 (Rename `errors.rs` file to `diagnostics.rs` (5/N))
- rust-lang/rust#157703 (Fix doc link to Instant sub in saturating caveat)
Failed merges:
- rust-lang/rust#157699 (Arg splat experiment - hir FnDecl impl)
tmeijn pushed a commit to tmeijn/dotfiles that referenced this pull request Aug 21, 2026
This MR contains the following updates:
| Package | Type | Update | Change |
|---|---|---|---|
| [rust](https://github.com/rust-lang/rust) | tools | minor | `1.97.1` → `1.98.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.98.0`](https://github.com/rust-lang/rust/blob/HEAD/RELEASES.md#Version-1980-2026-08-20)
[Compare Source](rust-lang/rust@1.97.1...1.98.0)
\==========================
<a id="1.98.0-Language"></a>
## Language
- [Allow shortening lifetime of `&mut` when unsize-coercing, even in an invariant position.](rust-lang/rust#149219) For example, you can now coerce a `Cell<&'long mut i32>` to a `Cell<&'short mut dyn Send>`. Such shortenings were already previously allowed when coercing a `&mut` to a `&`, or coercing a `&` to a `&`.
- [Add deny-by-default `invalid_runtime_symbol_definitions` lint and warn-by-default `suspicious_runtime_symbol_definitions` lint](rust-lang/rust#155521)
- The lints currently specifically targets `core` runtime symbols like `memcmp`, `memset`, `strlen`, ... and is planned to be expanded in the next few releases.
- [Add warn-by-default `c_void_returns` lint to check `core::ffi::c_void` as a return type](rust-lang/rust#156379)
<a id="1.98.0-Platform-Support"></a>
## Platform Support
- [Add `powerpc64-unknown-linux-gnuelfv2` as Tier 3](rust-lang/rust#144220)
- [Add `aarch64-unknown-linux-pauthtest` as Tier 3 target](rust-lang/rust#155722)
- [Promote `thumbv7a-none-eabi` to Tier 2](rust-lang/rust#155763)
- [Promote `thumbv7a-none-eabihf` to Tier 2](rust-lang/rust#155763)
- [Promote `thumbv7r-none-eabi` to Tier 2](rust-lang/rust#155763)
- [Promote `thumbv7r-none-eabihf` to Tier 2](rust-lang/rust#155763)
- [Promote `thumbv8r-none-eabihf` to Tier 2](rust-lang/rust#155763)
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.98.0-Libraries"></a>
## Libraries
- [Change `Location<'_>` lifetime to `'static` in `Panic[Hook]Info`](rust-lang/rust#146561)
- [Document panic in `RangeInclusive::from(legacy::RangeInclusive)`](rust-lang/rust#155421)
- [Document that `ManuallyDrop`'s `Box` interaction has been fixed](rust-lang/rust#155750)
- [Stabilize LoongArch CRC Intrinsics](rust-lang/rust#156908)
- [The `derive` macro is available at `{core,std}::derive`.](rust-lang/rust#154645) This was previously [unintentionally stabilized in 1.96](rust-lang/rust#159856), but is now [explicitly accepted](rust-lang/rust#154645) as a stabilized API.
- Please note that the MSRV for `{core,std}::derive` will be 1.96, and not 1.98.
<a id="1.98.0-Stabilized-APIs"></a>
## Stabilized APIs
- [`str::substr_range`](https://doc.rust-lang.org/stable/std/primitive.str.html#method.substr_range)
- [`[T]::subslice_range`](https://doc.rust-lang.org/stable/std/primitive.slice.html#method.subslice_range)
- [`core::fmt::NumBuffer`](https://doc.rust-lang.org/stable/core/fmt/struct.NumBuffer.html)
- [`<{integer}>::format_into`](https://doc.rust-lang.org/stable/core/primitive.usize.html#method.format_into)
- [`Send/Sync for std::process::CommandArgs`](https://doc.rust-lang.org/stable/std/process/struct.CommandArgs.html#impl-Send-for-CommandArgs%3C'a%3E)
- [`{fN}::algebraic_add`](https://doc.rust-lang.org/stable/core/primitive.f32.html#method.algebraic_add)
- [`{fN}::algebraic_sub`](https://doc.rust-lang.org/stable/core/primitive.f32.html#method.algebraic_sub)
- [`{fN}::algebraic_mul`](https://doc.rust-lang.org/stable/core/primitive.f32.html#method.algebraic_mul)
- [`{fN}::algebraic_div`](https://doc.rust-lang.org/stable/core/primitive.f32.html#method.algebraic_div)
- [`{fN}::algebraic_rem`](https://doc.rust-lang.org/stable/core/primitive.f32.html#method.algebraic_rem)
- [`NonZero<{integer}>::from_str_radix`](https://doc.rust-lang.org/stable/core/num/struct.NonZero.html#method.from_str_radix-4)
- [`String::from_utf16le`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.from_utf16le)
- [`String::from_utf16le_lossy`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.from_utf16le_lossy)
- [`String::from_utf16be`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.from_utf16be)
- [`String::from_utf16be_lossy`](https://doc.rust-lang.org/stable/std/string/struct.String.html#method.from_utf16be_lossy)
- [`[T]::strip_circumfix`](https://doc.rust-lang.org/stable/core/primitive.slice.html#method.strip_circumfix)
- [`str::strip_circumfix`](https://doc.rust-lang.org/stable/core/primitive.str.html#method.strip_circumfix)
- [`Atomic<T>::from_mut`](https://doc.rust-lang.org/stable/core/sync/atomic/struct.Atomic.html#method.from_mut)
- [`Atomic<T>::get_mut_slice`](https://doc.rust-lang.org/stable/core/sync/atomic/struct.Atomic.html#method.get_mut_slice)
- [`Atomic<T>::from_mut_slice`](https://doc.rust-lang.org/stable/core/sync/atomic/struct.Atomic.html#method.from_mut_slice)
- [`std::range::legacy`](https://doc.rust-lang.org/stable/std/range/legacy/index.html)
<a id="1.98.0-Compatibility-Notes"></a>
## Compatibility Notes
- [If fully elided, lifetime bounds of trait object types may now resolve differently or even get rejected in very specific niche scenarios](rust-lang/rust#129543)
- [Error in more cases of ambiguous imports](rust-lang/rust#145108)
- [Switch the destructors implementation for thread locals on Windows to use Fiber Local Storage (FLS)](rust-lang/rust#148799)
- [Convert some cases of the `ambiguous_glob_imports` lint into a hard error](rust-lang/rust#149195)
- [Where-bounds of the form `Type = Type` and `Type == Type` are no longer syntactically allowed](rust-lang/rust#153513)
- [Ensure Send/Sync is not implemented for std::env::Vars{,Os}](rust-lang/rust#155153)
- [Fix that in some attributes, arguments were not properly rejected](rust-lang/rust#155193)
- [`repr(transparent)` is now more strict about which fields have "trivial" layout and hence can be ignored: `repr(C)` types, types with private fields, and `#[non_exhaustive]` types are no longer considered "trivial"](rust-lang/rust#155299)
- [Correctly check whether types have equal size in `transmute()` when some `repr` attributes are involved.](rust-lang/rust#155418)
- [More characters are escaped when printing strings and chars](rust-lang/rust#155527)
- [Implement fast path for `derive(PartialOrd)` when deriving `Ord`](rust-lang/rust#155598)
This can break crates in practice where a type's PartialOrd and Ord impls were inconsistent with each other.
- [Add temporary scope to `assert_eq` and `assert_ne`](rust-lang/rust#155739)
- Closed a hole in the pattern matching [structural equality](https://doc.rust-lang.org/reference/patterns.html#constant-patterns) check, preventing cases where a match of a constant would be allowed, despite disagreeing with a manually written `PartialEq` implementation, when a `derive(PartialEq)` implementation for that type also exists.
- [On Emscripten the WASM exception handling ABI is now unconditionally used](rust-lang/rust#156928) The `-Zemscripten-wasm-eh=false` flag to switch back to JS exceptions has been removed.
- [The UNSAFE\_CODE lint is now consistently emitted for all unsafe attributes](rust-lang/rust#157201)
- [Solaris: remove `File::lock` implementation, it has the wrong semantics (return "unsupported" instead)](rust-lang/rust#157509)
- [Windows-gnu targets now specify baseline tools versions](rust-lang/rust#158020)
- [rustfmt now discovers module files that are defined in `cfg_select!`](rust-lang/rust#158372)
This may cause more code to be formatted which was previously ignored.
</details>
---
### Configuration
📅 **Schedule**: (UTC)
- 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 [Mend Renovate](https://github.com/renovatebot/renovate).
<!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiI0My4yODguMCIsInVwZGF0ZWRJblZlciI6IjQzLjI4OC4wIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJSZW5vdmF0ZSBCb3QiLCJhdXRvbWF0aW9uOmJvdC1hdXRob3JlZCIsImRlcGVuZGVuY3ktdHlwZTo6bWlub3IiXX0=-->
wip-sync pushed a commit to NetBSD/pkgsrc-wip that referenced this pull request Aug 24, 2026
Pkgsrc changes:
* Update patches to match new vendored versions.
* Associated checksum changes.
* Add cargo option to permit linker warnings (NetBSD compat code)
(taken from rust-beta wip package)
Upstream changes:
Version 1.98.0 (2026-08-20)
==========================
Language
--------
- [Allow shortening lifetime of `&mut` when unsize-coercing, even
in an invariant position.]
(rust-lang/rust#149219) For example, you
can now coerce a `Cell<&'long mut i32>` to a `Cell<&'short mut
dyn Send>`. Such shortenings were already previously allowed when
coercing a `&mut` to a `&`, or coercing a `&` to a `&`.
- [Add deny-by-default `invalid_runtime_symbol_definitions` lint
and warn-by-default `suspicious_runtime_symbol_definitions` lint]
(rust-lang/rust#155521)
- The lints currently specifically targets `core` runtime
symbols like `memcmp`, `memset`, `strlen`, ... and is planned
to be expanded in the next few releases.
- [Add warn-by-default `c_void_returns` lint to check `core::ffi::c_void`
as a return type] (rust-lang/rust#156379)
Platform Support
----------------
- [Add `powerpc64-unknown-linux-gnuelfv2` as Tier 3]
(rust-lang/rust#144220)
- [Add `aarch64-unknown-linux-pauthtest` as Tier 3 target]
(rust-lang/rust#155722)
- [Promote `thumbv7a-none-eabi` to Tier 2]
(rust-lang/rust#155763)
- [Promote `thumbv7a-none-eabihf` to Tier 2]
(rust-lang/rust#155763)
- [Promote `thumbv7r-none-eabi` to Tier 2]
(rust-lang/rust#155763)
- [Promote `thumbv7r-none-eabihf` to Tier 2]
(rust-lang/rust#155763)
- [Promote `thumbv8r-none-eabihf` to Tier 2]
(rust-lang/rust#155763)
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
---------
- [Change `Location<'_>` lifetime to `'static` in `Panic[Hook]Info`]
(rust-lang/rust#146561)
- [Document panic in `RangeInclusive::from(legacy::RangeInclusive)`]
(rust-lang/rust#155421)
- [Document that `ManuallyDrop`'s `Box` interaction has been fixed]
(rust-lang/rust#155750)
- [Stabilize LoongArch CRC Intrinsics]
(rust-lang/rust#156908)
- [The `derive` macro is available at `{core,std}::derive`.]
(rust-lang/rust#154645) This was
previously [unintentionally stabilized in 1.96]
(rust-lang/rust#159856), but is now
[explicitly accepted] (rust-lang/rust#154645)
as a stabilized API.
- Please note that the MSRV for
`{core,std}::derive` will be 1.96, and not 1.98.
Stabilized APIs
---------------
- [`str::substr_range`]
(https://doc.rust-lang.org/stable/std/primitive.str.html#method.substr_range)
- [`[T]::subslice_range`]
(https://doc.rust-lang.org/stable/std/primitive.slice.html#method.subslice_range)
- [`core::fmt::NumBuffer`]
(https://doc.rust-lang.org/stable/core/fmt/struct.NumBuffer.html)
- [`<{integer}>::format_into`]
(https://doc.rust-lang.org/stable/core/primitive.usize.html#method.format_into)
- [`Send/Sync for std::process::CommandArgs`]
(https://doc.rust-lang.org/stable/std/process/struct.CommandArgs.html#impl-Send-for-CommandArgs%3C'a%3E)
- [`{fN}::algebraic_add`]
(https://doc.rust-lang.org/stable/core/primitive.f32.html#method.algebraic_add)
- [`{fN}::algebraic_sub`]
(https://doc.rust-lang.org/stable/core/primitive.f32.html#method.algebraic_sub)
- [`{fN}::algebraic_mul`]
(https://doc.rust-lang.org/stable/core/primitive.f32.html#method.algebraic_mul)
- [`{fN}::algebraic_div`]
(https://doc.rust-lang.org/stable/core/primitive.f32.html#method.algebraic_div)
- [`{fN}::algebraic_rem`]
(https://doc.rust-lang.org/stable/core/primitive.f32.html#method.algebraic_rem)
- [`NonZero<{integer}>::from_str_radix`]
(https://doc.rust-lang.org/stable/core/num/struct.NonZero.html#method.from_str_radix-4)
- [`String::from_utf16le`]
(https://doc.rust-lang.org/stable/std/string/struct.String.html#method.from_utf16le)
- [`String::from_utf16le_lossy`]
(https://doc.rust-lang.org/stable/std/string/struct.String.html#method.from_utf16le_lossy)
- [`String::from_utf16be`]
(https://doc.rust-lang.org/stable/std/string/struct.String.html#method.from_utf16be)
- [`String::from_utf16be_lossy`]
(https://doc.rust-lang.org/stable/std/string/struct.String.html#method.from_utf16be_lossy)
- [`[T]::strip_circumfix`]
(https://doc.rust-lang.org/stable/core/primitive.slice.html#method.strip_circumfix)
- [`str::strip_circumfix`]
(https://doc.rust-lang.org/stable/core/primitive.str.html#method.strip_circumfix)
- [`Atomic<T>::from_mut`]
(https://doc.rust-lang.org/stable/core/sync/atomic/struct.Atomic.html#method.from_mut)
- [`Atomic<T>::get_mut_slice`]
(https://doc.rust-lang.org/stable/core/sync/atomic/struct.Atomic.html#method.get_mut_slice)
- [`Atomic<T>::from_mut_slice`]
(https://doc.rust-lang.org/stable/core/sync/atomic/struct.Atomic.html#method.from_mut_slice)
- [`std::range::legacy`]
(https://doc.rust-lang.org/stable/std/range/legacy/index.html)
Compatibility Notes
-------------------
- [If fully elided, lifetime bounds of trait object types may now
resolve differently or even get rejected in very specific niche
scenarios] (rust-lang/rust#129543)
- [Error in more cases of ambiguous imports]
(rust-lang/rust#145108)
- [Switch the destructors implementation for thread locals on
Windows to use Fiber Local Storage (FLS)]
(rust-lang/rust#148799)
- [Convert some cases of the `ambiguous_glob_imports` lint into a hard error]
(rust-lang/rust#149195)
- [Where-bounds of the form `Type = Type` and `Type == Type` are
no longer syntactically allowed]
(rust-lang/rust#153513)
- [Ensure Send/Sync is not implemented for std::env::Vars{,Os}]
(rust-lang/rust#155153)
- [Fix that in some attributes, arguments were not properly rejected]
(rust-lang/rust#155193)
- [`repr(transparent)` is now more strict about which fields have
"trivial" layout and hence can be ignored: `repr(C)` types, types
with private fields, and `#[non_exhaustive]` types are no longer
considered "trivial"] (rust-lang/rust#155299)
- [Correctly check whether types have equal size in `transmute()`
when some `repr` attributes are involved.]
(rust-lang/rust#155418)
- [More characters are escaped when printing strings and chars]
(rust-lang/rust#155527)
- [Implement fast path for `derive(PartialOrd)` when deriving `Ord`]
(rust-lang/rust#155598)
This can break crates in practice where a type's PartialOrd and
Ord impls were inconsistent with each other.
- [Add temporary scope to `assert_eq` and `assert_ne`]
(rust-lang/rust#155739)
- Closed a hole in the pattern matching [structural equality]
(https://doc.rust-lang.org/reference/patterns.html#constant-patterns)
check, preventing cases where a match of a constant would be
allowed, despite disagreeing with a manually written `PartialEq`
implementation, when a `derive(PartialEq)` implementation for
that type also exists.
- [On Emscripten the WASM exception handling ABI is now unconditionally used]
(rust-lang/rust#156928) The
`-Zemscripten-wasm-eh=false` flag to switch back to JS exceptions
has been removed.
- [The UNSAFE_CODE lint is now consistently emitted for all unsafe attributes]
(rust-lang/rust#157201)
- [Solaris: remove `File::lock` implementation, it has the wrong
semantics (return "unsupported" instead)]
(rust-lang/rust#157509)
- [Windows-gnu targets now specify baseline tools versions]
(rust-lang/rust#158020)
- [rustfmt now discovers module files that are defined in `cfg_select!`]
(rust-lang/rust#158372)
This may cause more code to be formatted which was previously ignored.
Sign up for freeto join this conversation on GitHub. Already have an account? Sign in to comment

Labels

disposition-mergeThis issue / PR is in PFCP or FCP with a disposition to merge it.finished-final-comment-periodThe final comment period is finished for this PR / Issue.needs-fcpThis change is insta-stable, or significant enough to need a team FCP to proceed.S-waiting-on-borsStatus: Waiting on bors to run and complete tests. Bors will change the label on completion.T-libsRelevant to the library team, which will review and decide on the PR/issue.T-libs-api[DEPRECATED; DO NOT USE]to-announceAnnounce this issue on triage meeting

Projects

None yet

Development

Successfully merging this pull request may close these issues.

5 participants

@Mark-Simulacrum@rustbot@Amanieu@rust-rfcbot@clarfonthey