Skip to content

Rollup of 8 pull requests - #164613

Merged
rust-bors[bot] merged 16 commits into
rust-lang:mainfrom
tgross35:rollup-7a4Fx7W
Oct 20, 2026
Merged

rust-bors[bot] merged 16 commits into
rust-lang:mainfrom
tgross35:rollup-7a4Fx7W

Conversation

@tgross35

Copy link
Copy Markdown
Member

Successful merges:

r? @ghost

Create a similar rollup

nia-e and others added 16 commits August 16, 2026 11:22
connect_timeout also now reject Duration::ZERO
This commit adds a new tier 3 target to the compiler named
`wasm32-none-component`. This was previously approved some time ago in
rust-lang/compiler-team/948. The main purpose of this target is to
provide some means of producing a WebAssembly component which does not,
by default, import any APIs at all. Users get to have fine-grained
control over what exactly is imported and what exactly is exported.

There's no immediate plan at this time to seek out tier 2, so for now
this is intended to just be a target that rustc knows about that's
useful for experimenting with but otherwise shouldn't cause too much
overhead otherwise.
…d variables

* typeck: avoid ICE with non-lifetime closure binders
* test: add non-lifetime closure binder regression tests and FIXMEs
…risDenton

windows: stabilise inherit_handles

Relevant to rust-lang#161158; closes rust-lang#146407 (by stabilising it). See my comment on the tracking issue.

r? libs
… r=chenyukang

Add a `wasm32-none-component` target definition

This commit adds a new tier 3 target to the compiler named `wasm32-none-component`. This was previously approved some time ago in rust-lang/compiler-team#948. The main purpose of this target is to provide some means of producing a WebAssembly component which does not, by default, import any APIs at all. Users get to have fine-grained control over what exactly is imported and what exactly is exported.

There's no immediate plan at this time to seek out tier 2, so for now this is intended to just be a target that rustc knows about that's useful for experimenting with but otherwise shouldn't cause too much overhead otherwise.
…nton

DirEntry: warn about use potential races when fetching metadata or file_type

r? @the8472
…345,adwinwhite

 Avoid ICE when closure expected signature contains non-lifetime bound variables

## Summary

Fixes rust-lang#154537.
Fixes rust-lang#108814.
Fixes rust-lang#110627.
Fixes rust-lang#125841.

Avoid an Internal Compiler Error (ICE) when type-checking a closure against an expected signature that contains non-region bound variables, such as with `feature(non_lifetime_binders)`.

## Problem

Given code like:

```rust
#![feature(non_lifetime_binders)]

fn take() -> impl for<T> Fn() -> T {
    || 3
}
```

When checking the closure expression against the expected `Fn` trait bound, `rustc_hir_typeck` attempts to liberate late-bound regions in the closure signature via `TyCtxt::liberate_late_bound_regions` / `instantiate_bound_regions_uncached`.

These functions expect the binder to contain region/lifetime variables. When the signature instead contains a higher-ranked type parameter (`for<T>`), the bound type reaches `rustc_middle::ty::fold` and triggers:

```text
bug!("unexpected bound ty in binder: ...")
```

resulting in an ICE.

## Solution

Closures cannot be generic over non-lifetime parameters. This PR updates `rustc_hir_typeck::closure` to avoid deriving closure expectations from signatures containing non-region bound variables:

1. Ignore projection clauses containing non-region bound variables when extracting closure expectations in `extract_sig_from_projection` and `extract_sig_from_projection_and_future_bound`.
2. Fall back to signature inference without an expected signature in `sig_of_closure_with_expectation` when `expected_sig.sig.has_non_region_bound_vars()`.

With this change, the compiler reports the expected type mismatch (`E0271`) instead of aborting with an ICE.

## Test Case

Added a UI regression test:

```text
tests/ui/traits/non_lifetime_binders/bound-type-relate.rs
```

The test verifies that the compiler produces a normal type error rather than an Internal Compiler Error.

## Testing

```text
./x.py test tests/ui/traits/non_lifetime_binders/bound-type-relate.rs
```

## LLM Disclosure

I used an LLM to assist with locating the failure in the test logs, tracing the compiler type-checking path, and drafting portions of this PR description. All code changes, diagnostics, and test verifications were reviewed and tested manually.
…isDenton

xous: tcpstream fix timeout rounding with small and wrap large values

connect_timeout also now reject Duration::ZERO
…risDenton

remove_dir_all: document and test symlink behavior more explicitly

`remove_dir_all` on Unix will currently delete symlinks to files, but on Windows it will not. Let's explicitly test for this and clarify the docs.

Cc @the8472
enable fchmodat_works test under android

I missed this one in rust-lang#163548. I don't know why we have what seems like duplicate tests for `fs::set_permissions_nofollow`, but more test coverage seems better so 🤷 .

@asder8215 -- all these tests got added in rust-lang#158168 apparently; why the duplication?
Update books

## rust-lang/nomicon

2 commits in 46fc44214afcd159be175c8ee62887cad04f615d..b0bb569883a3e65ab19d4f1adf1b8dbc1629d0a6
2026-10-17 09:16:09 UTC to 2026-10-16 23:50:01 UTC

- De-duplicate the description of FFI-unwind interaction (rust-lang/nomicon#530)
- Update for the removal of `Unique<T>` (rust-lang/nomicon#529)

## rust-lang/reference

5 commits in a286e1ecb8ce193d50056e4bb042eea9b23876ef..2dafab96d919d6ab2884488e970bf95610ff83eb
2026-10-13 19:23:53 UTC to 2026-10-06 18:53:56 UTC

- replace deprecated std::f64 constants with associated constants on f64 (rust-lang/reference#2385)
- Mark `mdbook-spec` as not publishable (rust-lang/reference#2384)
- Guarantee that the never type `!` is zero-sized and 1-aligned. (rust-lang/reference#2309)
- Remove stray empty line in example (rust-lang/reference#2380)
- PhantomData: clearly document alignment of 1, add to glossary examples (rust-lang/reference#2375)
@rust-bors rust-bors Bot added the rollup A PR which is a rollup label Oct 20, 2026
@rustbot rustbot added O-windows Operating system: Windows S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue. labels Oct 20, 2026
@tgross35

Copy link
Copy Markdown
Member Author

@bors r+ force rollup=never p=5

@rust-bors

rust-bors Bot commented Oct 20, 2026

Copy link
Copy Markdown
Contributor

📌 Commit a822717 has been approved by tgross35

It is now in the queue for this repository.

@rust-bors rust-bors Bot 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 Oct 20, 2026
@rust-bors

This comment has been minimized.

@rust-highfive

Copy link
Copy Markdown
Contributor

📣 Toolstate changed by #164613!

Tested on commit a7c37f9.
Direct link to PR: #164613

🎉 nomicon on windows: test-fail → test-pass (cc @traviscross @JohnTitor).
🎉 nomicon on linux: test-fail → test-pass (cc @traviscross @JohnTitor).

rust-highfive added a commit to rust-lang-nursery/rust-toolstate that referenced this pull request Oct 20, 2026
Tested on commit rust-lang/rust@a7c37f9.
Direct link to PR: <rust-lang/rust#164613>

🎉 nomicon on windows: test-fail → test-pass (cc @traviscross @JohnTitor).
🎉 nomicon on linux: test-fail → test-pass (cc @traviscross @JohnTitor).
@rust-bors rust-bors Bot added merged-by-bors This PR was explicitly merged by bors. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Oct 20, 2026
@rust-bors

rust-bors Bot commented Oct 20, 2026

Copy link
Copy Markdown
Contributor

☀️ Test successful - CI
Approved by: tgross35
Duration: 3h 37s
Pushing a7c37f9 to main...

@rust-bors
rust-bors Bot merged commit a7c37f9 into rust-lang:main Oct 20, 2026
15 checks passed
@rustbot rustbot added this to the 1.101.0 milestone Oct 20, 2026
@tgross35
tgross35 deleted the rollup-7a4Fx7W branch October 20, 2026 09:47
@github-actions

Copy link
Copy Markdown
Contributor
What is this? This is an experimental post-merge analysis report that shows differences in test outcomes between the merged PR and its parent PR.

Comparing 39b126b (parent) -> a7c37f9 (this PR)

Test differences

Show 137 test diffs

Stage 0

  • spec::tests::wasm32_none_component: [missing] -> pass (J1)

Stage 1

  • [assembly] tests/assembly-llvm/targets/targets-elf.rs#wasm32_none_component: [missing] -> pass (J1)
  • [crashes] tests/crashes/108814.rs: pass -> [missing] (J1)
  • [crashes] tests/crashes/110627.rs: pass -> [missing] (J1)
  • [crashes] tests/crashes/125841.rs: pass -> [missing] (J1)
  • [ui] tests/ui/traits/non_lifetime_binders/closure-expected-sig-bound-type-154537.rs: [missing] -> pass (J6)
  • fs::tests::recursive_rmdir_of_dir_symlink: [missing] -> pass (J7)
  • fs::tests::recursive_rmdir_of_file_symlink: [missing] -> pass (J7)
  • fs::tests::recursive_rmdir_of_symlink: pass -> [missing] (J7)
  • [ui (polonius)] tests/ui/traits/non_lifetime_binders/closure-expected-sig-bound-type-154537.rs: [missing] -> pass (J8)
  • spec::tests::wasm32_none_component: [missing] -> pass (J9)

Stage 2

  • fs::tests::fchmodat_works: [missing] -> pass (J0)
  • fs::tests::recursive_rmdir_of_file_symlink: [missing] -> pass (J2)
  • [crashes] tests/crashes/108814.rs: pass -> [missing] (J3)
  • [crashes] tests/crashes/110627.rs: pass -> [missing] (J3)
  • [crashes] tests/crashes/125841.rs: pass -> [missing] (J3)
  • [assembly] tests/assembly-llvm/targets/targets-elf.rs#wasm32_none_component: [missing] -> pass (J4)
  • fs::tests::recursive_rmdir_of_dir_symlink: [missing] -> pass (J4)
  • fs::tests::recursive_rmdir_of_symlink: pass -> [missing] (J4)
  • [ui] tests/ui/traits/non_lifetime_binders/closure-expected-sig-bound-type-154537.rs: [missing] -> pass (J5)

Additionally, 117 doctest diffs were found. These are ignored, as they are noisy.

Job group index

Test dashboard

Run

cargo run --manifest-path src/ci/citool/Cargo.toml -- \
    test-dashboard a7c37f9f0ee5e93396106e9de20f4a86b4154e63 --output-dir test-dashboard

And then open test-dashboard/index.html in your browser to see an overview of all executed tests.

Job duration changes

  1. test-x86_64-msvc-ext3: 1h 12m -> 1h 57m (+62.6%)
  2. test-x86_64-gnu-debug: 1h 25m -> 2h 12m (+56.3%)
  3. test-x86_64-gnu-aux: 1h 50m -> 2h 47m (+51.3%)
  4. test-x86_64-gnu-tools: 47m 31s -> 1h 11m (+49.7%)
  5. dist-x86_64-illumos: 1h 18m -> 1h 57m (+49.5%)
  6. test-i686-gnu-2: 1h 11m -> 1h 44m (+47.1%)
  7. test-x86_64-gnu-gcc-core-tests: 12m 48s -> 18m 15s (+42.6%)
  8. dist-x86_64-msvc-alt: 2h 57m -> 1h 43m (-42.0%)
  9. test-x86_64-mingw-1: 3h 13m -> 1h 56m (-39.7%)
  10. dist-riscv64-linux-gnu: 1h 33m -> 58m 29s (-37.7%)
How to interpret the job duration changes?

Job durations can vary a lot, based on the actual runner instance
that executed the job, system noise, invalidated caches, etc. The table above is provided
mostly for t-infra members, for simpler debugging of potential CI slow-downs.

@rust-timer

Copy link
Copy Markdown
Collaborator

Finished benchmarking commit (a7c37f9): comparison URL.

Overall result: no relevant changes - no action needed

@rustbot label: -perf-regression

Instruction count

This perf run didn't have relevant results for this metric.

Max RSS (memory usage)

Results (secondary -0.4%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-0.4% [-0.4%, -0.4%] 1
All ❌✅ (primary) - - 0

Cycles

Results (primary 0.7%, secondary 0.9%)

A less reliable metric. May be of interest, but not used to determine the overall result above.

mean range count
Regressions ❌
(primary)
2.4% [1.9%, 2.8%] 2
Regressions ❌
(secondary)
3.4% [0.8%, 6.3%] 9
Improvements ✅
(primary)
-2.6% [-2.6%, -2.6%] 1
Improvements ✅
(secondary)
-2.8% [-5.0%, -1.2%] 6
All ❌✅ (primary) 0.7% [-2.6%, 2.8%] 3

Binary size

This perf run didn't have relevant results for this metric.

Bootstrap: 488.638s -> 491.717s (0.63%)
Artifact size: 409.06 MiB -> 408.99 MiB (-0.02%)

@rust-bors

rust-bors Bot commented Oct 20, 2026

Copy link
Copy Markdown
Contributor

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#161163 windows: stabilise inherit_handles 49fe9aaf16b8f75c556ff91d9b5ef46b59553a4f
(link)
#162615 Add a wasm32-none-component target definition 1d450ae0f7be94d5a49861b049693a2bbb6566ce
(link)
#163553 DirEntry: warn about use potential races when fetching meta… 179c8e60a2800ee07b958df231808f260ff317e1
(link)
#163618 Avoid ICE when closure expected signature contains non-lif… d7781d84522c59032877a96b3bb0a04841f7f599
(link)
#163756 xous: tcpstream fix timeout rounding with small and wrap la… 22cba1b02454870aaa445f09848714404a4c3f18
(link)
#163818 remove_dir_all: document and test symlink behavior more exp… a345ee29db7badc34c1b4b9d4167e1d173dbb86f
(link)
#163823 enable fchmodat_works test under android 18877ee1c6fa303ad70cf86bb82a68105397517c
(link)
#164596 Update books 004d3d33cdc3be5134e1461b5226bd587262be60
(link)

parent commit: 39b126b8e2

In the case of a perf regression, run the following command with the SHAs of each PR you suspect might be the cause: @rust-timer triage $SHA $SHA $SHA..., or run @rust-timer triage all to benchmark all rollup members.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

merged-by-bors This PR was explicitly merged by bors. O-windows Operating system: Windows rollup A PR which is a rollup T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-libs Relevant to the library team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

9 participants