Skip to content

Rollup of 17 pull requests - #160627

Merged
rust-bors[bot] merged 56 commits into
rust-lang:mainfrom
JonathanBrouwer:rollup-gyiU6Wn
Aug 6, 2026
Merged

Rollup of 17 pull requests#160627
rust-bors[bot] merged 56 commits into
rust-lang:mainfrom
JonathanBrouwer:rollup-gyiU6Wn

Conversation

@JonathanBrouwer

Copy link
Copy Markdown
Contributor

Successful merges:

r? @ghost

Create a similar rollup

bit-aloo and others added 30 commits July 25, 2026 05:37
When encountering a move error caused by a desugared method call, talk about the user-facing feature (`await`/`?`/`for`-loop), instead of only the internal API it got desugared to.

```
error[E0382]: use of moved value: `entry`
  --> $DIR/moved-into-question-mark.rs:11:18
   |
LL |     for entry in fs::read_dir(".")? {
   |         ----- move occurs because `entry` has type `Result<DirEntry, std::io::Error>`, which does not implement the `Copy` trait
LL |
LL |         let file_type = entry?.file_type()?;
   |                         ------ `entry` moved due to usage in the question mark operator
...
LL |             dbg!(entry?.file_name());
   |                  ^^^^^ value used here after move
   |
note: the question mark operator is expanded into a call to `branch`, which takes ownership of the receiver `self`, which moves `entry`
  --> $SRC_DIR/core/src/ops/try_trait.rs:LL:COL
help: you could `clone` the value and consume it, if the following trait bounds could be satisfied: `DirEntry: Clone` and `std::io::Error: Clone`
   |
LL |         let file_type = entry.clone()?.file_type()?;
   |                              ++++++++
```
…` jobs

The aarch64 macos runners seem to be consistently among the slowest
jobs, sometimes pushing our overall CI time to 4 hours on a bad run.
Let's try to split the jobs to keep the overall Merge CI time
manageable:

* `aarch64-apple` => `aarch64-apple-{1,2}`
* `aarch64-apple-macos-26` => `aarch64-apple-macos-26-{1,2}`
This method currently does two things: it applies the effect, and also
computes the edges. However:
- Three of the four call sites don't use the edges.
- Most analyses just return `terminator.edges()` unconditionally.

This commit separates the edge computation into a new method,
`get_terminator_edges()`. It defaults to `terminator.edges()`, which
means that most analyses don't need to define it. And now edges are only
obtained when they are needed (in `Forward::apply_effects_in_block`).
On Apple, `send`/`sendto` reject a length larger than `c_int::MAX` with
`EINVAL` instead of doing a short send. The send length was only clamped to
`wrlen_t::MAX` (a no-op on 64-bit unix), so writing more than `c_int::MAX`
bytes to a socket failed on macOS.

Add a `MAX_SEND_LEN` cap (`c_int::MAX` on Apple, `wrlen_t::MAX` elsewhere),
used in `write`, `send`, `send_to`, and `send_with_flags`.
The pages are demand-zero and never written, so the datagram test no
longer needs ~2 GiB of memory and its `#[ignore]` can go away. Keep a
`Vec`-backed copy for non-unix targets, where `mmap` isn't available.
.. so that you don't need to import `TypeVisitable` in order to use it.
I used the `TypeVisitable` from `rustc_type_ir` and not
`rustc_middle::ty` because the macro is called inside `rustc_type_ir`
itself.
This is a cheaper alternative to `TyAndLayout::for_variant(_, idx).is_uninhabited()`
.. instead of hand-rolling our own
these are slightly distinct subsets of a platonic ideal borrowck.
@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-infra Relevant to the infrastructure 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. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver) labels Aug 6, 2026
@JonathanBrouwer

Copy link
Copy Markdown
Contributor Author

@bors r+ p=5

Trying commonly failed jobs
@bors try jobs=dist-various-1,test-various,x86_64-gnu-aux,x86_64-gnu-llvm-21-3,x86_64-msvc-1,aarch64-apple-,x86_64-mingw-1,i686-msvc-

@rust-bors

rust-bors Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

📌 Commit ce8e8ee has been approved by JonathanBrouwer

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 Aug 6, 2026
@rust-bors

This comment has been minimized.

rust-bors Bot pushed a commit that referenced this pull request Aug 6, 2026
Rollup of 17 pull requests


try-job: dist-various-1
try-job: test-various
try-job: x86_64-gnu-aux
try-job: x86_64-gnu-llvm-21-3
try-job: x86_64-msvc-1
try-job: aarch64-apple-*
try-job: x86_64-mingw-1
try-job: i686-msvc-*
@rust-bors

This comment has been minimized.

@rust-log-analyzer

This comment was marked as outdated.

@rust-bors

rust-bors Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

☀️ Try build successful (CI)
Build commit: 4a2bf00 (4a2bf009e031b7d7f09a0a267167e274bf383b8b)
Base parent: b070f45 (b070f45ad92ed45b20e57d9483a21657d0d00715)

@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 Aug 6, 2026
@rust-bors

rust-bors Bot commented Aug 6, 2026

Copy link
Copy Markdown
Contributor

☀️ Test successful - CI
Approved by: JonathanBrouwer
Duration: 3h 10m 32s
Pushing 84b36a7 to main...

@github-actions

github-actions Bot commented Aug 6, 2026

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 887804d (parent) -> 84b36a7 (this PR)

Test differences

Show 67 test diffs

Stage 1

  • [ui (polonius)] tests/ui/borrowck/alias-liveness/gat-static-unnormalized.rs#next: [missing] -> pass (J1)
  • [ui (polonius)] tests/ui/borrowck/alias-liveness/gat-static-unnormalized.rs#old: [missing] -> pass (J1)
  • [ui (polonius)] tests/ui/borrowck/moved-into-question-mark.rs: [missing] -> pass (J1)
  • [ui (polonius)] tests/ui/const-generics/gca/dyn-compat-generic-non-type-assoc-const.rs: [missing] -> pass (J1)
  • [ui (polonius)] tests/ui/const-generics/gca/dyn-non-type-assoc-const-binding.rs: [missing] -> pass (J1)
  • [ui (polonius)] tests/ui/nll/polonius/nll-legacy-unnecessary-error.rs#legacy: [missing] -> ignore (ignored when comparing with compare-mode-polonius ((explicit revisions))) (J1)
  • [ui (polonius)] tests/ui/nll/polonius/nll-legacy-unnecessary-error.rs#nll: [missing] -> ignore (ignored when comparing with compare-mode-polonius ((explicit revisions))) (J1)
  • [ui (polonius)] tests/ui/nll/polonius/nll-legacy-unnecessary-error.rs#polonius: [missing] -> ignore (ignored when comparing with compare-mode-polonius ((explicit revisions))) (J1)
  • [ui (polonius)] tests/ui/parser/if-let-chain-unclosed-delim.rs: [missing] -> pass (J1)
  • [ui (polonius)] tests/ui/parser/recover/array-type-no-semi-turbofish-81097.rs: [missing] -> pass (J1)
  • [ui (polonius)] tests/ui/suggestions/suggest-path-through-direct-dep-crate/use-shortest-hidden-reexport-path.rs: [missing] -> pass (J1)
  • [ui (polonius)] tests/ui/traits/next-solver/generalize/eagerly-normalizing-aliases.rs#next: [missing] -> pass (J1)
  • [ui (polonius)] tests/ui/traits/next-solver/generalize/eagerly-normalizing-aliases.rs#old: [missing] -> pass (J1)
  • [ui (polonius)] tests/ui/traits/next-solver/opaques/recursive-hidden-type-canonicalization.rs: [missing] -> pass (J1)
  • [ui (polonius)] tests/ui/traits/next-solver/opaques/stalled-goal-rerun.rs: [missing] -> pass (J1)
  • [ui (polonius)] tests/ui/type-alias/lack-of-wfcheck-gat-generic-const-args.rs: [missing] -> pass (J1)
  • [ui (polonius)] tests/ui/type-alias/lack-of-wfcheck-generic-const-args.rs#gca: [missing] -> pass (J1)
  • [ui (polonius)] tests/ui/type-alias/lack-of-wfcheck-generic-const-args.rs#no_gca: [missing] -> pass (J1)
  • [ui] tests/ui/borrowck/alias-liveness/gat-static-unnormalized.rs#next: [missing] -> pass (J2)
  • [ui] tests/ui/borrowck/alias-liveness/gat-static-unnormalized.rs#old: [missing] -> pass (J2)
  • [ui] tests/ui/borrowck/moved-into-question-mark.rs: [missing] -> pass (J2)
  • [ui] tests/ui/const-generics/gca/dyn-compat-generic-non-type-assoc-const.rs: [missing] -> pass (J2)
  • [ui] tests/ui/const-generics/gca/dyn-non-type-assoc-const-binding.rs: [missing] -> pass (J2)
  • [ui] tests/ui/nll/polonius/nll-legacy-unnecessary-error.rs#legacy: [missing] -> pass (J2)
  • [ui] tests/ui/nll/polonius/nll-legacy-unnecessary-error.rs#nll: [missing] -> pass (J2)
  • [ui] tests/ui/nll/polonius/nll-legacy-unnecessary-error.rs#polonius: [missing] -> pass (J2)
  • [ui] tests/ui/parser/if-let-chain-unclosed-delim.rs: [missing] -> pass (J2)
  • [ui] tests/ui/parser/recover/array-type-no-semi-turbofish-81097.rs: [missing] -> pass (J2)
  • [ui] tests/ui/suggestions/suggest-path-through-direct-dep-crate/use-shortest-hidden-reexport-path.rs: [missing] -> pass (J2)
  • [ui] tests/ui/traits/next-solver/generalize/eagerly-normalizing-aliases.rs#next: [missing] -> pass (J2)
  • [ui] tests/ui/traits/next-solver/generalize/eagerly-normalizing-aliases.rs#old: [missing] -> pass (J2)
  • [ui] tests/ui/traits/next-solver/opaques/recursive-hidden-type-canonicalization.rs: [missing] -> pass (J2)
  • [ui] tests/ui/traits/next-solver/opaques/stalled-goal-rerun.rs: [missing] -> pass (J2)
  • [ui] tests/ui/type-alias/lack-of-wfcheck-gat-generic-const-args.rs: [missing] -> pass (J2)
  • [ui] tests/ui/type-alias/lack-of-wfcheck-generic-const-args.rs#gca: [missing] -> pass (J2)
  • [ui] tests/ui/type-alias/lack-of-wfcheck-generic-const-args.rs#no_gca: [missing] -> pass (J2)
  • net::tcp::tests::write_buffer_larger_than_c_int_max: [missing] -> pass (J4)
  • net::udp::tests::send_datagram_larger_than_c_int_max: [missing] -> pass (J4)
  • sys::net::connection::socket::tests::max_send_len_within_platform_limit: [missing] -> pass (J6)

Stage 2

  • [ui] tests/ui/borrowck/alias-liveness/gat-static-unnormalized.rs#next: [missing] -> pass (J0)
  • [ui] tests/ui/borrowck/alias-liveness/gat-static-unnormalized.rs#old: [missing] -> pass (J0)
  • [ui] tests/ui/borrowck/moved-into-question-mark.rs: [missing] -> pass (J0)
  • [ui] tests/ui/const-generics/gca/dyn-compat-generic-non-type-assoc-const.rs: [missing] -> pass (J0)
  • [ui] tests/ui/const-generics/gca/dyn-non-type-assoc-const-binding.rs: [missing] -> pass (J0)
  • [ui] tests/ui/nll/polonius/nll-legacy-unnecessary-error.rs#legacy: [missing] -> pass (J0)
  • [ui] tests/ui/nll/polonius/nll-legacy-unnecessary-error.rs#nll: [missing] -> pass (J0)
  • [ui] tests/ui/nll/polonius/nll-legacy-unnecessary-error.rs#polonius: [missing] -> pass (J0)
  • [ui] tests/ui/parser/if-let-chain-unclosed-delim.rs: [missing] -> pass (J0)
  • [ui] tests/ui/parser/recover/array-type-no-semi-turbofish-81097.rs: [missing] -> pass (J0)
  • [ui] tests/ui/suggestions/suggest-path-through-direct-dep-crate/use-shortest-hidden-reexport-path.rs: [missing] -> pass (J0)
  • [ui] tests/ui/traits/next-solver/generalize/eagerly-normalizing-aliases.rs#next: [missing] -> pass (J0)
  • [ui] tests/ui/traits/next-solver/generalize/eagerly-normalizing-aliases.rs#old: [missing] -> pass (J0)
  • [ui] tests/ui/traits/next-solver/opaques/recursive-hidden-type-canonicalization.rs: [missing] -> pass (J0)
  • [ui] tests/ui/traits/next-solver/opaques/stalled-goal-rerun.rs: [missing] -> pass (J0)
  • [ui] tests/ui/type-alias/lack-of-wfcheck-gat-generic-const-args.rs: [missing] -> pass (J0)
  • [ui] tests/ui/type-alias/lack-of-wfcheck-generic-const-args.rs#gca: [missing] -> pass (J0)
  • [ui] tests/ui/type-alias/lack-of-wfcheck-generic-const-args.rs#no_gca: [missing] -> pass (J0)
  • net::udp::tests::send_datagram_larger_than_c_int_max: [missing] -> ignore (requires ~2 GiB of memory) (J3)
  • sys::net::connection::socket::tests::max_send_len_within_platform_limit: [missing] -> pass (J5)
  • net::tcp::tests::write_buffer_larger_than_c_int_max: [missing] -> pass (J7)
  • net::udp::tests::send_datagram_larger_than_c_int_max: [missing] -> pass (J7)

Additionally, 6 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 84b36a78a28a63f134171c670be1932ffa2485f8 --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. x86_64-gnu-gcc-core-tests: 8m 4s -> 14m 39s (+81.4%)
  2. armhf-gnu: 55m 51s -> 1h 24m (+51.2%)
  3. i686-gnu-2: 1h 7m -> 1h 40m (+48.9%)
  4. x86_64-gnu-gcc: 47m 26s -> 1h 9m (+45.9%)
  5. dist-x86_64-mingw: 1h 56m -> 2h 37m (+35.5%)
  6. dist-ohos-aarch64: 56m 26s -> 1h 15m (+34.6%)
  7. x86_64-gnu-stable: 1h 28m -> 1h 57m (+32.9%)
  8. dist-x86_64-msvc: 1h 42m -> 2h 12m (+29.0%)
  9. dist-various-1: 45m 46s -> 33m (-27.9%)
  10. dist-i686-linux: 1h 50m -> 1h 21m (-26.6%)
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

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#159530 Cap socket send length to c_int::MAX on Apple targets 402e54c58a9631c8e0cab6c15619c080cefc3a06 (link)
#159506 Allow associated const equality constraints with GCA e1373c7c39767e0fb4539e52684161ccb06be491 (link)
#160006 Account for desugaring in method call move errors 26b3efd578eca6c9d8b6f246fc81411c9f06611e (link)
#160415 Split aarch64-apple{,-macos-26} => `aarch64-apple{,-macos… 514f48b72c0b6c83aafe8c1f55e629f9736cc0c5 (link)
#160464 fix: Check the fallback map before queueing child in `visib… e577f4b444c89ef4d9b2de7f1acdf0e20b56d197 (link)
#160555 Split apply_primary_terminator_effect cf26d9b29fcce56c93cef93908e5131a1a24766f (link)
#160592 Suggest if-let chain continuation on unclosed delimiter 406d5947f8027034e639f7fc6aac4876247551d7 (link)
#160600 Avoid the std DLL copy alongside rustc f6f8edad501b7590560860cec1ce288f6c8e3882 (link)
#160156 check_consts: exhaustively match on CastKind 15cbfdf7b02a44d30b7047a19dd01713c4d4bd74 (link)
#160211 Rename #[unroll] => #[rustc_unroll] to mitigate nameres… 7065bbebafe06a57e95adddd80a72b00b1d5dc65 (link)
#160304 Add tests for fixed new solver issues 6c29943ffe64b5de41592fa7cc706a0514baa8bf (link)
#160398 rustc_abi: Add LayoutData::is_variant_uninhabited method b4a41244698c2f9694fe54fb03bc5878ec0bdacf (link)
#160546 Update error message in documentation comments 5b45ed0992720cfd7c895fe8e73c4c83dcd91bb3 (link)
#160568 Use VisitorResult helper macros bd700c5e439f663eed602073f99a654e6222541a (link)
#160571 Add regression test for array type recovery in generic argu… 66c902559d26edc3152670c5cf75f19ca4b8e45b (link)
#160588 add a test showing polonius alpha is not a subset of datalo… 428b68022909bab7c389cc915653ac59b592474c (link)
#160617 Add a suggestion to MissingUnsafeOnExtern diagnostic 886c3f695c23ffcd9e278137b046b73a04e181ae (link)

previous master: 887804d568

In the case of a perf regression, run the following command for each PR you suspect might be the cause: @rust-timer build $SHA

@rust-timer

Copy link
Copy Markdown
Collaborator

Finished benchmarking commit (84b36a7): comparison URL.

Overall result: ❌✅ regressions and improvements - please read:

Our benchmarks found a performance regression caused by this PR.
This might be an actual regression, but it can also be just noise.

Next Steps:

  • If the regression was expected or you think it can be justified,
    please write a comment with sufficient written justification, and add
    @rustbot label: +perf-regression-triaged to it, to mark the regression as triaged.
  • If you think that you know of a way to resolve the regression, try to create
    a new PR with a fix for the regression.
  • If you do not understand the regression or you think that it is just noise,
    you can ask the @rust-lang/wg-compiler-performance working group for help (members of this group
    were already notified of this PR).

@rustbot label: +perf-regression
cc @rust-lang/wg-compiler-performance

Instruction count

Our most reliable metric. Used to determine the overall result above. However, even this metric can be noisy.

mean range count
Regressions ❌
(primary)
- - 0
Regressions ❌
(secondary)
0.4% [0.2%, 0.5%] 7
Improvements ✅
(primary)
-0.3% [-0.3%, -0.2%] 5
Improvements ✅
(secondary)
-0.3% [-0.3%, -0.2%] 4
All ❌✅ (primary) -0.3% [-0.3%, -0.2%] 5

Max RSS (memory usage)

Results (primary 2.9%)

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

mean range count
Regressions ❌
(primary)
2.9% [2.4%, 3.3%] 2
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 2.9% [2.4%, 3.3%] 2

Cycles

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

Binary size

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

Bootstrap: 458.35s -> 457.798s (-0.12%)
Artifact size: 398.64 MiB -> 399.35 MiB (0.18%)

@rustbot rustbot added the perf-regression Performance regression. label Aug 6, 2026
@JonathanBrouwer

Copy link
Copy Markdown
Contributor Author

Started perf runs

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

Labels

A-attributes Area: Attributes (`#[…]`, `#![…]`) A-CI Area: Our Github Actions CI A-testsuite Area: The testsuite used to check the correctness of rustc merged-by-bors This PR was explicitly merged by bors. perf-regression Performance regression. PG-exploit-mitigations Project group: Exploit mitigations rollup A PR which is a rollup T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. T-infra Relevant to the infrastructure 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. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver)

Projects

None yet

Development

Successfully merging this pull request may close these issues.