Skip to content
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

Rollup of 12 pull requests #138202

Merged
merged 31 commits into from
Mar 8, 2025
Merged

Rollup of 12 pull requests #138202

merged 31 commits into from
Mar 8, 2025

Conversation

jhpratt
Copy link
Member

@jhpratt jhpratt commented Mar 8, 2025

Successful merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

Curtis D'Alves and others added 30 commits February 20, 2025 14:31
It's hard to implement edition migrations without having a perma-unstable
"future" edition to target.
See MCP 840.

I left a specialized error message that should help users that hit this
in the wild (for example, because they use it in their CI).
While it shares more than zero code with the SysV x86-32 ABI impl,
there is no particular reason to organize wildly different ABIs
using if-else in the same function.
This is already applied for rustc/std tools. This is needed to make
`windows` crates avoid trying to depend on a generated
`windows.0.xx.0.lib`.
For `broken-pipe-no-ice` until std `anonymous_pipe` stabilizes.
Add verbatim linker to AIXLinker

This adds support for the "verbatim" native link modifier on AIX, will successfully pass the `native-link-modifier-verbatim-linker test case`
…pl, r=jieyouxu

compiler: factor Windows x86-32 ABI impl into its own file

While it shares more than zero code with the SysV x86-32 ABI impl, there is no particular reason to organize wildly different ABIs using if-else in the same function.
Prevent `rmake.rs` from using unstable features, and fix 3 run-make tests that currently do

Addresses (mostly) rust-lang#137532.
Follow-up to rust-lang#137373.

### Summary

- Fix 3 run-make tests that currently use unstable features:
    1. `tests/run-make/issue-107495-archive-permissions/rmake.rs` uses `#![feature(rustc_private)]` for `libc` on `unix`, but `run_make_support` already exports `libc`, so just use that.
    2. `tests/run-make/cross-lang-lto/rmake.rs` uses `#![feature(path_file_prefix)]` for convenience, replaced with similar filename prefix logic.
    3. `tests/run-make/broken-pipe-no-ice/rmake.rs` uses `#![feature(anonymous_pipe)]` for anonymous pipes. This is more complicated[^race-condition], and I decided to temporarily introduce a dependency on [`os_pipe`] before std's `anonymous_pipe` library feature is stabilized[^pipe-stab]. I left a FIXME tracked by rust-lang#137532 to make the switch once `anonymous_pipe` stabilizes and reaches beta.
- Use `RUSTC_BOOTSTRAP=-1` when building `rmake.rs` to have the stage 0 rustc reject any unstable features used in `rmake.rs`.

- The requirement that `rmake.rs` may not use any unstable features is now documented in rustc-dev-guide.
- This PR does not impose `RUSTC_BOOTSTRAP=-1` when building `run-make-support`, but I suppose we could.

r? `@Kobzol`

try-job: x86_64-msvc-1
try-job: x86_64-mingw-1

[`os_pipe`]: https://github.com/oconnor663/os_pipe.rs

[^race-condition]: We can't just try to spawn `rustc` and immediate close the stderr handle because of race condition, as there's no guarantee `rustc` will not try to print to stderr before the handle gets closed.
[^pipe-stab]: In-progress stabilization PR over at rust-lang#135822.
…oss,ehuss

add a "future" edition

This idea has been discussed previously [on Zulip](https://rust-lang.zulipchat.com/#narrow/channel/213817-t-lang/topic/Continuous.20edition-like.20changes.3F/near/432559262) (though what I've implemented isn't exactly the "next"/"future" editions proposed in that message, just the "future" edition). I've found myself prototyping changes that involve edition migrations and wanting to target an upcoming edition for those migrations, but none exists. This should be permanently unstable and not removed.
Remove i586-pc-windows-msvc

See [MCP 840](rust-lang/compiler-team#840).

I left a specialized error message that should help users that hit this in the wild (for example, because they use it in their CI).

```
error: Error loading target specification: the `i586-pc-windows-msvc` target has been removed. Use the `i686-pc-windows-msvc` target instead.
       Windows 10 (the minimum required OS version) requires a CPU baseline of at least i686 so you can safely switch. Run `rustc --print target-list` for a list of built-in targets
```

``@workingjubilee`` ``@calebzulawski`` fyi portable-simd uses this target in CI, if you wanna remove it already before this happens
atomic: clarify that failing conditional RMW operations are not 'writes'

Fixes rust-lang#136669

r? ``@Amanieu``
Cc ``@rust-lang/opsem`` ``@chorman0773`` ``@gnzlbg`` ``@briansmith``
…arcoieni

Add post-merge analysis CI workflow

This PR adds a post-merge analysis workflow, which was discussed [here](https://rust-lang.zulipchat.com/#narrow/channel/242791-t-infra/topic/Reporting.20test.20suite.20statistics.20after.20merge).

The workflow currently analyzes test suite results from bootstrap metrics. It downloads metrics for all known jobs in the parent and current (HEAD) commit, compares them and prints a truncated diff. It then posts this diff to the merged PR as a comment. Later I also want to add other statistics to the analysis, e.g. changes in CI/bootstrap step durations.

It can be tested locally e.g. using this:
```
cargo run --release --manifest-path src/ci/citool/Cargo.toml post-merge-report 3cb0272 fd17dea
```
This uses a slightly older commit as a parent, to have more results in the diff (normally the diff won't be so large).

CC `@jieyouxu`

r? `@marcoieni`
…aDotInTheVoid

rustdoc: Add attribute-related tests for rustdoc JSON.

Add rustdoc JSON tests covering the use of the following attributes:
- `#[non_exhaustive]` applied to enums, variants, and structs
- `#[must_use]`, both with and without a message
- `#[no_mangle]`, in both edition 2021 and 2024 (`#[unsafe(no_mangle)]`) flavors
- `#[export_name]`, also in both edition 2021 and 2024 flavors

Related to rust-lang#137645; this is a subset of the attributes that `cargo-semver-checks` relies on and tests in its own test suite or in the test suites of its components such as `trustfall-rustdoc-adapter`.

Helps with rust-lang#81359

r? `@aDotInTheVoid`
setTargetTriple now accepts Triple rather than string

llvm/llvm-project#129868 updated `setTargetTriple`
…e-impl, r=oli-obk

Delay bug for negative auto trait rather than ICEing

Fixes rust-lang#138149

r? oli-obk
…rious, r=compiler-errors

Allow anyone to relabel `CI-spurious-*`

As suggested by `@Noratrieb` in reference to me attempting to set this label in rust-lang#136780 (comment), allow unauthenticated users to relabel `CI-spurious-*`.
@rustbot rustbot added A-rustc-dev-guide Area: rustc-dev-guide A-rustdoc-json Area: Rustdoc JSON backend A-rustdoc-search Area: Rustdoc's search feature 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) 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. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. rollup A PR which is a rollup T-rustdoc-frontend Relevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output. labels Mar 8, 2025
@jhpratt
Copy link
Member Author

jhpratt commented Mar 8, 2025

@bors r+ rollup=never p=5

@bors
Copy link
Contributor

bors commented Mar 8, 2025

📌 Commit dad4c8b has been approved by jhpratt

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 Mar 8, 2025
@bors
Copy link
Contributor

bors commented Mar 8, 2025

⌛ Testing commit dad4c8b with merge 20f0108ada90e37c2350ad68fdc6afe56f51539d...

@bors
Copy link
Contributor

bors commented Mar 8, 2025

☀️ Test successful - checks-actions
Approved by: jhpratt
Pushing 20f0108 to master...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Mar 8, 2025
@bors bors merged commit 20f0108 into rust-lang:master Mar 8, 2025
7 checks passed
@rustbot rustbot added this to the 1.87.0 milestone Mar 8, 2025
@rust-log-analyzer
Copy link
Collaborator

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

Click to see the possible cause of the failure (guessed by this bot)

gh pr comment ${HEAD_PR} -F output.log
shell: /usr/bin/bash -e {0}
##[endgroup]
fatal: ambiguous argument 'HEAD^1': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
##[error]Process completed with exit code 128.

@jhpratt jhpratt deleted the rollup-kqrl5xn branch March 8, 2025 06:25
@rust-timer
Copy link
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#137337 Add verbatim linker to AIXLinker 236c1667c84f3047e2520356687a68e590d6ab84 (link)
#137363 compiler: factor Windows x86-32 ABI impl into its own file a44b63582b2db4251e13c0fdd0b307e2bf4ad7f1 (link)
#137537 Prevent rmake.rs from using unstable features, and fix 3 … 7084f500801acb9d88363b83b8693fdc2892fb12 (link)
#137606 add a "future" edition c7b7409633e982428e00bd82ebb2c922d4f5e1a0 (link)
#137957 Remove i586-pc-windows-msvc 9a5f2aad0c41604fdb9304e3e0f749f4251f28db (link)
#138000 atomic: clarify that failing conditional RMW operations are… 2b62e0a5a46b600876836169eb616eb61f6067cb (link)
#138013 Add post-merge analysis CI workflow 6ba58b093c8e44dc726d5bfd48e60f0903f178cd (link)
#138033 rustdoc: Add attribute-related tests for rustdoc JSON. a7ef12b4e94535177fd01600bd26be6f7df06a2b (link)
#138137 setTargetTriple now accepts Triple rather than string 558ab23700c9ef3e2c30514e5cba657f54154d3b (link)
#138173 Delay bug for negative auto trait rather than ICEing 4d81d002dcb5deb791f34886ebc4fbc54689be69 (link)
#138184 Allow anyone to relabel CI-spurious-* c02fdb20dedca915e85e2fba8bdc5ef12f9ac98b (link)
#138187 remove clones 814b7d25bb31c6297749b2991acb5124a41aa4f1 (link)

previous master: f5a1ef7121

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

@Kobzol
Copy link
Contributor

Kobzol commented Mar 8, 2025

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

Click to see the possible cause of the failure (guessed by this bot)

gh pr comment ${HEAD_PR} -F output.log
shell: /usr/bin/bash -e {0}
##[endgroup]
fatal: ambiguous argument 'HEAD^1': unknown revision or path not in the working tree.
Use '--' to separate paths from revisions, like this:
'git <command> [<revision>...] -- [<file>...]'
##[error]Process completed with exit code 128.

Excuse this log, the post-merge workflow will require some tuning.

@jhpratt
Copy link
Member Author

jhpratt commented Mar 8, 2025

I assumed it was a bug (and also that it was known) given the fact that everything did in fact succeed 🙂

@Kobzol
Copy link
Contributor

Kobzol commented Mar 8, 2025

It's a new workflow (merged in this rollup) that runs after merging, so the failure doesn't really affect anything (other than spamming).

@rust-timer
Copy link
Collaborator

Finished benchmarking commit (20f0108): comparison URL.

Overall result: ❌ regressions - no action needed

@rustbot label: -perf-regression

Instruction count

This is the most reliable metric that we have; it was used to determine the overall result at the top of this comment. However, even this metric can sometimes exhibit noise.

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

Max RSS (memory usage)

Results (primary -0.0%, secondary -4.0%)

This is a less reliable metric that may be of interest but was not used to determine the overall result at the top of this comment.

mean range count
Regressions ❌
(primary)
2.7% [2.7%, 2.7%] 1
Regressions ❌
(secondary)
- - 0
Improvements ✅
(primary)
-0.9% [-1.3%, -0.4%] 3
Improvements ✅
(secondary)
-4.0% [-5.1%, -2.2%] 3
All ❌✅ (primary) -0.0% [-1.3%, 2.7%] 4

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: 766.525s -> 766.756s (0.03%)
Artifact size: 362.15 MiB -> 362.11 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-rustdoc-search Area: Rustdoc's search feature 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-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. T-rustdoc Relevant to the rustdoc team, which will review and decide on the PR/issue. T-rustdoc-frontend Relevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output.
Projects
None yet
Development

Successfully merging this pull request may close these issues.