Skip to content

Rollup of 9 pull requests #142358

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 22 commits into from
Jun 11, 2025
Merged

Rollup of 9 pull requests #142358

merged 22 commits into from
Jun 11, 2025

Conversation

matthiaskrgr
Copy link
Member

@matthiaskrgr matthiaskrgr commented Jun 11, 2025

Successful merges:

Failed merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

estebank and others added 22 commits June 9, 2025 19:55
```
error[E0621]: explicit lifetime required in the type of `x`
  --> $DIR/42701_one_named_and_one_anonymous.rs:10:9
   |
LL |         &*x
   |         ^^^ lifetime `'a` required
   |
help: add explicit lifetime `'a` to the type of `x`
   |
LL | fn foo2<'a>(a: &'a Foo, x: &'a i32) -> &'a i32 {
   |                             ++
```
Lets the test still work on different architectures.
We move the vectorcall ABI tests into their own file which is now
only run on x86-64, while replacing them with rust-cold ABI tests
so that aarch64 hosts continue to test an unstable ABI.

A better solution might be cross-compiling or something but
I really don't have time for that right now.
To centralize this hack in one place with a backlink to the issue
tracking this hack, as this logic is also needed by compiletest to
implement a `//@ needs-target-std` directive.
To support tests to condition their (potentially cross-compile)
execution based on whether the target supports std.
Instead of a jumble of `ignore-$target`s, `ignore-none` and
`ignore-nvptx`.
No changes; just removing the `self` that wasn't needed.
…bzol

Configure bootstrap backport nominations through triagebot

Following the discussion in [#t-infra/bootstrap > ✔ Have triagebot create backport nomination threads?](https://rust-lang.zulipchat.com/#narrow/channel/326414-t-infra.2Fbootstrap/topic/.E2.9C.94.20Have.20triagebot.20create.20backport.20nomination.20threads.3F/with/521876500) where we noticed that bootstrap backport nominations were difficult to track, since:

- We don't really have a dedicated person / group of people checking for bootstrap backport nominations.
- We don't really have an establish way of handling bootstrap backports.

This PR configures triagebot to open backport nominations threads (indicated for bootstrap team if a given PR has the suitable team label, https://github.com/rust-lang/rust/labels/T-bootstrap) in [#t-infra/bootstrap/backports](https://rust-lang.zulipchat.com/#narrow/channel/507486-t-infra.2Fbootstrap.2Fbackports). The current configuration is such that **the whole bootstrap team will be pinged for bootstrap backport nominations**[^diverges].

### Steps

- [x] ~~Ping members who opt-in subscribe to backport channel, or ping the whole bootstrap team?~~
    - Poll: [#t-infra/bootstrap > Have triagebot create backport nomination threads? @ 💬](https://rust-lang.zulipchat.com/#narrow/channel/326414-t-infra.2Fbootstrap/topic/Have.20triagebot.20create.20backport.20nomination.20threads.3F/near/522141337)
    - Votes (as of 2025-06-10): 3 votes "no preference", 1 vote "in favor".
- [x] ~~(Best for follow-up) Maybe also document bootstrap team's backport process / decision process in Forge? It's a bit different from [compiler team's backport process](https://forge.rust-lang.org/compiler/backports.html) because we don't have weekly bootstrap triage meetings and thus don't have sync backport decisions.~~
    - Tracked as follow-up in Forge: rust-lang/rust-forge#889.

---

r? Kobzol

[^diverges]: Note that this configuration is similar to the types team backport nominations, but diverges from the compiler team.
…-suggestion, r=compiler-errors

Make E0621 missing lifetime suggestion verbose

```
error[E0621]: explicit lifetime required in the type of `x`
  --> $DIR/42701_one_named_and_one_anonymous.rs:10:9
   |
LL |         &*x
   |         ^^^ lifetime `'a` required
   |
help: add explicit lifetime `'a` to the type of `x`
   |
LL | fn foo2<'a>(a: &'a Foo, x: &'a i32) -> &'a i32 {
   |                             ++
```

Part of rust-lang#141973.
…ts, r=aDotInTheVoid

tests: Change ABIs in tests to more future-resilient ones

Eventually we're going to make these tests not work as they are currently written on HEAD, so change them now to get ahead of that.

r? aDotInTheVoid
Only run `citool` tests on the `auto` branch

Proposed here: [#t-infra > PR ci seems much to slow @ 💬](https://rust-lang.zulipchat.com/#narrow/channel/242791-t-infra/topic/PR.20ci.20seems.20much.20to.20slow/near/523159583). I haven't yet seen these tests failing on CI, so I think it's a good trade-off.

r? `````@marcoieni`````
Implement `//@ needs-target-std` compiletest directive

Closes rust-lang#141863.
Needed to unblock rust-lang#139244 and rust-lang#141856.

### Summary

This PR implements a `//@ needs-target-std` compiletest directive that gates test execution based on whether the target supports std or not. For some cases, this should be preferred over e.g. some combination of `//@ ignore-none`, `//@ ignore-nvptx` and more[^none-limit].

### Implementation limitation

Unfortunately, since there is currently [no reliable way to determine from metadata whether a given target supports std or not](rust-lang#142296), we have to resort to a hack. Bootstrap currently determines whether or not a target supports std by a naive target tuple substring comparison: a target supports std if its target tuple does *not* contain one of `["-none", "nvptx", "switch"]` substrings. This PR simply pulls that hack out into `build_helpers` to avoid reimplementing the same hack in compiletest, and uses that logic to inform `//@ needs-target-std`.

### Auxiliary changes

This PR additionally changes a few run-make tests to use `//@ needs-target-std` over an inconsistent combination of target-based `ignore`s. This should help with rust-lang#139244.

---

r? bootstrap

[^none-limit]: Notably, `target_os = "none"` is **not** a sufficient condition for "target does not support std"
…, r=fee1-dead

Make loongarch-none target maintainers more easily pingable

In the same style as rust-lang#139028.
r? compiler
…nv-query, r=lcnr

Dont unwrap and re-wrap typing envs

Just a tiny tweak to make the query less awkward.

r? lcnr
…gjubilee

Remove unneeded `FunctionCx` from some codegen methods

No changes; just removing the `self` that wasn't needed.

r? workingjubilee
cc rust-lang#138759 (comment)
…, r=tgross35

feat: Add `bit_width` for unsigned integer types

- Accepted ACP: rust-lang/libs-team#598
- Tracking issue: rust-lang#142326

This PR adds methods to the primitive unsigned integer types that return the minimum number of bits required to represent an unsigned integer.
@rustbot rustbot added A-compiletest Area: The compiletest test runner A-meta Area: Issues & PRs about the rust-lang/rust repository itself A-run-make Area: port run-make Makefiles to rmake.rs A-rustc-dev-guide Area: rustc-dev-guide A-rustdoc-json Area: Rustdoc JSON backend A-testsuite Area: The testsuite used to check the correctness of rustc S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) labels Jun 11, 2025
@rustbot rustbot added 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. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. rollup A PR which is a rollup labels Jun 11, 2025
@matthiaskrgr
Copy link
Member Author

@bors r+ rollup=never p=5

@bors
Copy link
Collaborator

bors commented Jun 11, 2025

📌 Commit 583a6e2 has been approved by matthiaskrgr

It is now in the queue for this repository.

@bors bors 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, 2025
@bors
Copy link
Collaborator

bors commented Jun 11, 2025

⌛ Testing commit 583a6e2 with merge e703dff...

@bors
Copy link
Collaborator

bors commented Jun 11, 2025

☀️ Test successful - checks-actions
Approved by: matthiaskrgr
Pushing e703dff to master...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Jun 11, 2025
@bors bors merged commit e703dff into rust-lang:master Jun 11, 2025
11 checks passed
@rustbot rustbot added this to the 1.89.0 milestone Jun 11, 2025
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 f77bb1b (parent) -> e703dff (this PR)

Test differences

Show 1581 test diffs

Stage 0

  • header::tests::test_needs_target_std: [missing] -> pass (J4)

Stage 1

  • [rustdoc-json] tests/rustdoc-json/vectorcall.rs: [missing] -> pass (J0)
  • num::u128::test_bit_width: [missing] -> pass (J1)
  • num::u16::test_bit_width: [missing] -> pass (J1)
  • num::u32::test_bit_width: [missing] -> pass (J1)
  • num::u64::test_bit_width: [missing] -> pass (J1)
  • num::u8::test_bit_width: [missing] -> pass (J1)

Stage 2

  • [run-make] tests/run-make/cpp-global-destructors: ignore (ignored when the operating system is none) -> ignore (ignored when cross-compiling) (J2)
  • [run-make] tests/run-make/export-executable-symbols: ignore (ignored when the operating system is none) -> ignore (ignored if target does not support std) (J2)
  • [run-make] tests/run-make/incr-foreign-head-span: ignore (ignored when the operating system is none) -> ignore (ignored if target does not support std) (J2)
  • [run-make] tests/run-make/incr-prev-body-beyond-eof: ignore (ignored when the operating system is none) -> ignore (ignored if target does not support std) (J2)
  • [run-make] tests/run-make/incr-test-moved-file: ignore (ignored when the operating system is none) -> ignore (ignored if target does not support std) (J2)
  • [run-make] tests/run-make/moved-src-dir-fingerprint-ice: ignore (ignored when the operating system is none) -> ignore (ignored if target does not support std) (J2)
  • [rustdoc-json] tests/rustdoc-json/vectorcall.rs: [missing] -> ignore (only executed when the architecture is x86_64) (J3)
  • [rustdoc-json] tests/rustdoc-json/vectorcall.rs: [missing] -> pass (J5)

Additionally, 1566 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 e703dff8fe220b78195c53478e83fb2f68d8499c --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. dist-apple-various: 8229.9s -> 6082.5s (-26.1%)
  2. aarch64-gnu-debug: 3480.5s -> 4074.1s (17.1%)
  3. dist-x86_64-apple: 10041.0s -> 8537.1s (-15.0%)
  4. x86_64-gnu-aux: 5813.4s -> 6674.7s (14.8%)
  5. x86_64-rust-for-linux: 2599.0s -> 2945.9s (13.3%)
  6. mingw-check-tidy: 74.6s -> 65.9s (-11.5%)
  7. mingw-check-1: 1635.8s -> 1818.0s (11.1%)
  8. aarch64-apple: 4874.6s -> 5408.5s (11.0%)
  9. i686-gnu-1: 7371.9s -> 8164.8s (10.8%)
  10. i686-gnu-nopt-1: 7254.6s -> 8030.4s (10.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
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#141967 Configure bootstrap backport nominations through triagebot c2004392dfc5307cb94918510952e9603b0cd3e9 (link)
#142042 Make E0621 missing lifetime suggestion verbose e6972a535aa13d23089e3b4a8f4726e680628dbf (link)
#142272 tests: Change ABIs in tests to more future-resilient ones 64732c466fd31b4cecb5a538d6475566499a5527 (link)
#142282 Only run citool tests on the auto branch d54562642ae70c6725e90aee66c88088fd937b1c (link)
#142297 Implement //@ needs-target-std compiletest directive 3480d89321ff713dc43968a4ef0fed208efa2513 (link)
#142298 Make loongarch-none target maintainers more easily pingable c92269df748269c0bfb580c340dafe62528c201d (link)
#142306 Dont unwrap and re-wrap typing envs 22cc89e96ed8e60b24774fec553d84989759b424 (link)
#142324 Remove unneeded FunctionCx from some codegen methods cca25ad12ec323b4cdb6d3ea865022711d550a76 (link)
#142328 feat: Add bit_width for unsigned integer types fb6571651a388f43d95195a74a9bdf863d7d4f41 (link)

previous master: f77bb1b294

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
Collaborator

Finished benchmarking commit (e703dff): comparison URL.

Overall result: ❌ regressions - no action needed

@rustbot label: -perf-regression

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

Max RSS (memory usage)

Results (primary 5.4%, secondary -1.0%)

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

mean range count
Regressions ❌
(primary)
5.4% [1.8%, 9.0%] 2
Regressions ❌
(secondary)
2.7% [2.7%, 2.7%] 1
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-2.2% [-2.5%, -2.1%] 3
All ❌✅ (primary) 5.4% [1.8%, 9.0%] 2

Cycles

Results (secondary 10.2%)

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

Binary size

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

Bootstrap: 754.591s -> 754.802s (0.03%)
Artifact size: 372.13 MiB -> 372.09 MiB (-0.01%)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
A-compiletest Area: The compiletest test runner A-meta Area: Issues & PRs about the rust-lang/rust repository itself A-run-make Area: port run-make Makefiles to rmake.rs A-rustc-dev-guide Area: rustc-dev-guide A-rustdoc-json Area: Rustdoc JSON backend A-testsuite Area: The testsuite used to check the correctness of rustc merged-by-bors This PR was explicitly merged by bors. rollup A PR which is a rollup S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. 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-libs Relevant to the library team, which will review and decide on the PR/issue. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue.
Projects
None yet
Development

Successfully merging this pull request may close these issues.