Skip to content

Rollup of 7 pull requests#153846

Merged
rust-bors[bot] merged 25 commits intorust-lang:mainfrom
Zalathar:rollup-pGGSemr
Mar 14, 2026
Merged

Rollup of 7 pull requests#153846
rust-bors[bot] merged 25 commits intorust-lang:mainfrom
Zalathar:rollup-pGGSemr

Conversation

@Zalathar
Copy link
Member

Successful merges:

r? @ghost

Create a similar rollup

petrochenkov and others added 25 commits February 22, 2026 10:46
If an edge uses some not-yet-known node, we just leave the node's data empty, that data can be added later.

Use this support to avoid skipping edges in DepGraphQuery
Moving the macro and its expansion into the same physical file resolves a lot
of tension in the current module arrangement.

Code in the macro is now free to use plain imports in the same file, and there
is no longer any question of whether `mod query_impl` should be declared inside
the macro, or surrounding a separate expansion site.
LinkedGraph: support adding nodes and edges in arbitrary order

If an edge uses some not-yet-known node, we just leave the node's data empty, that data can be added later.

Use this support to avoid skipping edges in RetainedDepGraph.

This is continuation of rust-lang#152590, that PR just fixes the ICE, this PR also preserves all the edges in debug dumps.
This is also a minimized version of rust-lang#151821 with a smaller amount of data structure hacks.
…cote

Replace `visit_waiters` with `abstracted_waiters_of`

This replaces `visit_waiters` which uses closures to visit waiters with `abstracted_waiters_of` which returns a list of waiters. This makes the control flow of their users a bit clearer.

Additionally `abstracted_waiters_of` includes non-query waiters unlike `visit_waiters`. This means that `connected_to_root` now considers resumable waiters from the compiler root as being connected to root, while previously only non-resumable waiters counted. This can result in some additional entry points being found. Similarly in the loop detecting entry points we now consider queries in the cycle with direct resumable waiters from the compiler root as being entry points.

When looking for entry points we now look at waiters until we found a query to populate the `EntryPoint.waiter` field instead of stopping when we determined it to be an entry point.

cc @petrochenkov @nnethercote
Move and expand the big `rustc_query_impl` macro into a physical `query_impl.rs`

While looking through rust-lang#153588, I came up with a related but different change that I think resolves a lot of tension in the current module arrangement.

The core idea is that if we both define and expand the big macro in the same physical module `rustc_query_impl::query_impl`, then we no longer need to worry about where `mod query_impl` should be declared, or where its imports should go, because those questions now have simple and obvious answers.

The second commit follows up with some more changes inspired by rust-lang#153588. Those particular follow-ups are not essential to the main idea of this PR.

r? nnethercote
Reimplement const closures

Tracking issue: rust-lang#106003

Best reviewed commit-by-commit

The old solver can't handle `for<'a> |x: &'a()| ()` closures in const contexts, but that feature is unstable itself, so we can just leave it to the next solver to handle.

We need a lot more tests, we're testing the bare minimum of success and failure paths right now.

r? @fee1-dead
…r=WaffleLapkin

Fix std doctest build for SGX target.

This PR fixes standard library doctest build for `x86_64-fortanix-unknown-sgx` target.
…nnethercote

Remove `value_from_cycle_error` specializations

This removes `value_from_cycle_error` specializations which are not involved in custom cycle error handling.

This is a step towards removing query cycle recovery.
delete some duplicated tests

Delete some tests which have almost-exact duplicates (only difference is formatting or the concrete integer values used) in the `tests/ui/moves` directory.
@rust-bors rust-bors bot added the rollup A PR which is a rollup label Mar 14, 2026
@rustbot rustbot added A-query-system Area: The rustc query system (https://rustc-dev-guide.rust-lang.org/query.html) 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 Mar 14, 2026
@rustbot rustbot added the WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver) label Mar 14, 2026
@Zalathar
Copy link
Member Author

Rollup of everything.

Creating this unified rollup in advance, because I expect #153841 will need to be cancelled due to a stalled job.

@bors r+ rollup=never p=6

@rust-bors
Copy link
Contributor

rust-bors bot commented Mar 14, 2026

📌 Commit 00ae089 has been approved by Zalathar

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 Mar 14, 2026
@rust-bors

This comment has been minimized.

rust-bors bot pushed a commit that referenced this pull request Mar 14, 2026
Rollup of 7 pull requests

Successful merges:

 - #152621 (LinkedGraph: support adding nodes and edges in arbitrary order)
 - #153376 (Replace `visit_waiters` with `abstracted_waiters_of`)
 - #153760 (Move and expand the big `rustc_query_impl` macro into a physical `query_impl.rs`)
 - #153818 (Reimplement const closures)
 - #153774 (Fix std doctest build for SGX target.)
 - #153786 (Remove `value_from_cycle_error` specializations)
 - #153819 (delete some duplicated tests)
@rust-bors rust-bors bot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. and removed S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. labels Mar 14, 2026
@rust-bors
Copy link
Contributor

rust-bors bot commented Mar 14, 2026

💔 Test for e38a4b6 failed: CI. Failed job:

@Zalathar
Copy link
Member Author

Failure looks strange; possibly bogus?

@bors retry

@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 Mar 14, 2026
@rust-log-analyzer
Copy link
Collaborator

A job failed! Check out the build log: (web) (plain enhanced) (plain)

Click to see the possible cause of the failure (guessed by this bot)
   Compiling syn v2.0.98
   Compiling memchr v2.7.6
   Compiling ring v0.17.11
   Compiling winnow v0.7.6
warning: ring@0.17.11: Compiler family detection failed due to error: ToolNotFound: failed to find tool "clang": program not found (see https://docs.rs/cc/latest/cc/#compile-time-requirements for help)
warning: ring@0.17.11: Compiler family detection failed due to error: ToolNotFound: failed to find tool "clang": program not found (see https://docs.rs/cc/latest/cc/#compile-time-requirements for help)
error: failed to run custom build command for `ring v0.17.11`

Caused by:
  process didn't exit successfully: `C:\a\rust\rust\src\ci\citool\../../../build/citool\debug\build\ring-63a299cd8df94489\build-script-build` (exit code: 1)
  --- stdout
  cargo:rerun-if-env-changed=CARGO_MANIFEST_DIR
  cargo:rerun-if-env-changed=CARGO_PKG_NAME
  cargo:rerun-if-env-changed=CARGO_PKG_VERSION_MAJOR
  cargo:rerun-if-env-changed=CARGO_PKG_VERSION_MINOR
---
  cargo:rerun-if-env-changed=CARGO_CFG_TARGET_OS
  cargo:rerun-if-env-changed=CARGO_CFG_TARGET_ENV
  cargo:rerun-if-env-changed=CARGO_CFG_TARGET_ENDIAN
  OPT_LEVEL = Some(0)
  OUT_DIR = Some(C:\a\rust\rust\src\ci\citool\../../../build/citool\debug\build\ring-d7401f09d0f3d416\out)
  TARGET = Some(aarch64-pc-windows-msvc)
  cargo:rerun-if-env-changed=VCINSTALLDIR
  VCINSTALLDIR = None
  cargo:rerun-if-env-changed=VSTEL_MSBuildProjectFullPath
  VSTEL_MSBuildProjectFullPath = None
  cargo:rerun-if-env-changed=VSCMD_ARG_VCVARS_SPECTRE
  VSCMD_ARG_VCVARS_SPECTRE = None
  cargo:rerun-if-env-changed=WindowsSdkDir
  WindowsSdkDir = None
  cargo:rerun-if-env-changed=WindowsSDKVersion
  WindowsSDKVersion = None
  cargo:rerun-if-env-changed=LIB
  LIB = None
  PATH = Some(C:\a\rust\rust\src\ci\citool\../../../build/citool\debug\deps;C:\a\rust\rust\src\ci\citool\../../../build/citool\debug;C:\Users\runneradmin\.rustup\toolchains\stable-aarch64-pc-windows-msvc\lib\rustlib\aarch64-pc-windows-msvc\lib;C:\Program Files\Git\clangarm64/bin;C:\Program Files\Git\usr\bin;C:\Users\runneradmin\bin;C:/a/rust/rust/ninja;C:/a/rust/rust/sccache;C:\aliyun-cli;C:\vcpkg;C:\Program Files (x86)\NSIS\;C:\Program Files\Mercurial\;C:\hostedtoolcache\windows\stack\3.7.1\x64;C:\mingw64\bin;C:\Program Files\dotnet;C:\Program Files\MySQL\MySQL Server 8.0\bin;C:\Program Files (x86)\R\R-4.5.2\bin\x64;C:\SeleniumWebDrivers\GeckoDriver;C:\SeleniumWebDrivers\EdgeDriver\;C:\SeleniumWebDrivers\ChromeDriver;C:\Program Files (x86)\sbt\bin;C:\Program Files (x86)\GitHub CLI;C:\Program Files\Git\bin;C:\Program Files (x86)\pipx_bin;C:\npm\prefix;C:\hostedtoolcache\windows\go\1.24.11\arm64\bin;C:\hostedtoolcache\windows\Python\3.13.11\arm64\Scripts;C:\hostedtoolcache\windows\Python\3.13.11\arm64;C:\hostedtoolcache\windows\Ruby\3.4.7\aarch64\bin;C:\Program Files\OpenSSL\bin;C:\tools\kotlinc\bin;C:\hostedtoolcache\windows\Java_Temurin-Hotspot_jdk\21.0.9-10.0\aarch64\bin;C:\Program Files (x86)\ImageMagick-7.1.2-Q16-HDRI;C:\Program Files\Microsoft SDKs\Azure\CLI2\wbin;C:\ProgramData\kind;C:\ProgramData\Chocolatey\bin;C:\Windows\system32;C:\Windows;C:\Windows\System32\Wbem;C:\Windows\System32\WindowsPowerShell\v1.0\;C:\Windows\System32\OpenSSH\;C:\Program Files\PowerShell\7\;C:\Program Files\Microsoft\Web Platform Installer\;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\;C:\Program Files\Microsoft SQL Server\150\Tools\Binn\;C:\Program Files\dotnet\;C:\Program Files (x86)\Windows Kits\10\Windows Performance Toolkit\;C:\Program Files\Microsoft SQL Server\130\DTS\Binn\;C:\Program Files\Microsoft SQL Server\140\DTS\Binn\;C:\Program Files\Microsoft SQL Server\150\DTS\Binn\;C:\Program Files\Microsoft SQL Server\160\DTS\Binn\;C:\Program Files\Microsoft SQL Server\170\DTS\Binn\;C:\Strawberry\c\bin;C:\Strawberry\perl\site\bin;C:\Strawberry\perl\bin;C:\ProgramData\chocolatey\lib\pulumi\tools\Pulumi\bin;C:\Program Files\CMake\bin;C:\Tools\Ninja;C:\ProgramData\chocolatey\lib\maven\apache-maven-3.9.11\bin;C:\Program Files\LLVM\bin;C:\Program Files\nodejs\;C:\Program Files\Git\cmd;C:\Program Files\Git\clangarm64\bin;C:\Program Files\Git\usr\bin;C:\Program Files\GitHub CLI\;c:\tools\php;C:\Program Files (x86)\sbt\bin;C:\Program Files\Amazon\AWSCLIV2\;C:\Program Files\Amazon\SessionManagerPlugin\bin\;C:\Program Files\Amazon\AWSSAMCLI\bin\;C:\Program Files\Microsoft SQL Server\130\Tools\Binn\;C:\Users\runneradmin\.dotnet\tools;C:\Users\runneradmin\.cargo\bin;C:\Users\runneradmin\AppData\Local\Microsoft\WindowsApps;C:\Users\runneradmin\.rustup\toolchains\stable-aarch64-pc-windows-msvc\bin)
  cargo:rerun-if-env-changed=INCLUDE
  INCLUDE = None
  HOST = Some(aarch64-pc-windows-msvc)
  cargo:rerun-if-env-changed=CC_aarch64-pc-windows-msvc
  CC_aarch64-pc-windows-msvc = None
  cargo:rerun-if-env-changed=CC_aarch64_pc_windows_msvc
  CC_aarch64_pc_windows_msvc = None
  cargo:rerun-if-env-changed=HOST_CC
  HOST_CC = None

@rust-bors

This comment has been minimized.

@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 Mar 14, 2026
@rust-bors
Copy link
Contributor

rust-bors bot commented Mar 14, 2026

☀️ Test successful - CI
Approved by: Zalathar
Duration: 3h 11m 28s
Pushing 620e36a to main...

@rust-bors rust-bors bot merged commit 620e36a into rust-lang:main Mar 14, 2026
12 checks passed
@rustbot rustbot added this to the 1.96.0 milestone Mar 14, 2026
@github-actions
Copy link
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 a0e206b (parent) -> 620e36a (this PR)

Test differences

Show 42 test diffs

Stage 1

  • [ui] tests/ui/moves/move-1-unique.rs: pass -> [missing] (J0)
  • [ui] tests/ui/moves/move-2-unique.rs: pass -> [missing] (J0)
  • [ui] tests/ui/moves/move-4-unique.rs: pass -> [missing] (J0)
  • [ui] tests/ui/moves/move-arg-2-unique.rs: pass -> [missing] (J0)
  • [ui] tests/ui/moves/move-scalar.rs: pass -> [missing] (J0)
  • [ui] tests/ui/traits/const-traits/call-const-closure.rs: pass -> [missing] (J0)
  • [ui] tests/ui/traits/const-traits/call-const-closure.rs#next: [missing] -> pass (J0)
  • [ui] tests/ui/traits/const-traits/call-const-closure.rs#old: [missing] -> pass (J0)
  • [ui] tests/ui/traits/const-traits/call.rs: pass -> [missing] (J0)
  • [ui] tests/ui/traits/const-traits/call.rs#next: [missing] -> pass (J0)
  • [ui] tests/ui/traits/const-traits/call.rs#old: [missing] -> pass (J0)
  • [ui] tests/ui/traits/const-traits/const-closure-issue-125866-pass.rs: pass -> [missing] (J0)
  • [ui] tests/ui/traits/const-traits/const_closure-const_trait_impl-ice-113381.rs: pass -> [missing] (J0)

Stage 2

  • [ui] tests/ui/moves/move-1-unique.rs: pass -> [missing] (J1)
  • [ui] tests/ui/moves/move-2-unique.rs: pass -> [missing] (J1)
  • [ui] tests/ui/moves/move-4-unique.rs: pass -> [missing] (J1)
  • [ui] tests/ui/moves/move-arg-2-unique.rs: pass -> [missing] (J1)
  • [ui] tests/ui/moves/move-scalar.rs: pass -> [missing] (J1)
  • [ui] tests/ui/traits/const-traits/call-const-closure.rs: pass -> [missing] (J1)
  • [ui] tests/ui/traits/const-traits/call-const-closure.rs#next: [missing] -> pass (J1)
  • [ui] tests/ui/traits/const-traits/call-const-closure.rs#old: [missing] -> pass (J1)
  • [ui] tests/ui/traits/const-traits/call.rs: pass -> [missing] (J1)
  • [ui] tests/ui/traits/const-traits/call.rs#next: [missing] -> pass (J1)
  • [ui] tests/ui/traits/const-traits/call.rs#old: [missing] -> pass (J1)
  • [ui] tests/ui/traits/const-traits/const-closure-issue-125866-pass.rs: pass -> [missing] (J1)
  • [ui] tests/ui/traits/const-traits/const_closure-const_trait_impl-ice-113381.rs: pass -> [missing] (J1)

Additionally, 16 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 620e36a8d1fc2f9e5694ce83c2631877651a962c --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. aarch64-apple: 2h 29m -> 3h 4m (+23.5%)
  2. tidy: 3m 17s -> 2m 41s (-18.3%)
  3. dist-android: 34m 36s -> 28m 26s (-17.8%)
  4. dist-aarch64-apple: 1h 43m -> 2h 1m (+17.5%)
  5. dist-apple-various: 1h 39m -> 1h 25m (-13.8%)
  6. i686-gnu-nopt-1: 2h 5m -> 2h 21m (+12.4%)
  7. x86_64-gnu-debug: 1h 55m -> 2h 9m (+12.1%)
  8. dist-various-2: 42m 14s -> 37m 25s (-11.4%)
  9. x86_64-gnu-llvm-21-3: 1h 51m -> 2h 3m (+11.4%)
  10. i686-gnu-2: 1h 32m -> 1h 41m (+10.2%)
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
Collaborator

Finished benchmarking commit (620e36a): comparison URL.

Overall result: no relevant changes - no action needed

@rustbot label: -perf-regression

Instruction count

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

Max RSS (memory usage)

Results (primary -2.1%)

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)
-2.1% [-2.1%, -2.1%] 1
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) -2.1% [-2.1%, -2.1%] 1

Cycles

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

Binary size

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

Bootstrap: 481.291s -> 483.729s (0.51%)
Artifact size: 394.91 MiB -> 396.86 MiB (0.49%)

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

Labels

A-query-system Area: The rustc query system (https://rustc-dev-guide.rust-lang.org/query.html) merged-by-bors This PR was explicitly merged by bors. 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. 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.

9 participants