Skip to content

Rollup of 7 pull requests - #165777

Merged
rust-bors[bot] merged 18 commits into
rust-lang:mainfrom
JonathanBrouwer:rollup-a5eaPVH
Nov 10, 2026
Merged

rust-bors[bot] merged 18 commits into
rust-lang:mainfrom
JonathanBrouwer:rollup-a5eaPVH

Conversation

@JonathanBrouwer

Copy link
Copy Markdown
Member

Successful merges:

r? @ghost

Create a similar rollup

panstromek and others added 18 commits November 8, 2026 15:11
In BPF, available set of atomic instructions depends on CPU version.
Make the compiler aware of that distinction by adding the new field
`per_cpu_atomic_widths`, then honor its value above `min_atomic_width`
and `max_atomic_width`.

Previously, we assumed availability of 64-bit acquire/release atomics
for BPF, but that's not true for the v3/generic CPU (and older). In
effect, `core::io::Error` failed to compile at ISel with `Cannot select:
... AtomicLoad`.

rust-lang#135175 proposes making BPF
target emit BPF binaries. That requires ability to build entire core
library. This change partially fixes the issue.

Code in this change is generated by (an open-weight and self-hosted)
LLM, it was agreed on in the Zulip thread [0], where @nagisa volunteered
as a reviewer.

[0] https://rust-lang.zulipchat.com/#narrow/channel/606558-llm-reviews/topic/Seeking.20review.20for.20BPF.20bytecode.20linking.20.28issue.20.23135175.29/near/631892496
BPF: Define max/min atomic width per CPU version

In BPF, available set of atomic instructions depends on CPU version. Make the compiler aware of that distinction by adding the new field `per_cpu_atomic_widths`, then honor its value above `min_atomic_width` and `max_atomic_width`.

Previously, we assumed availability of 64-bit acquire/release atomics for BPF, but that's not true for the v3/generic CPU. In effect, `core::io::Error` failed to compile at ISel with `Cannot select: ... AtomicLoad`.

rust-lang#135175 proposes making BPF target emit BPF binaries. That requires ability to build entire core library. This change partially fixes the issue.

Code in this change is generated by (an open-weight and self-hosted) LLM, it was agreed on in the Zulip thread [0], where @nagisa volunteered as a reviewer.

Fixes: rust-lang#165349

[0] https://rust-lang.zulipchat.com/#narrow/channel/606558-llm-reviews/topic/Seeking.20review.20for.20BPF.20bytecode.20linking.20.28issue.20.23135175.29/near/631892496

r? @nagisa
… r=oli-obk

Avoid terminator: None in MIR building

Another step towards changing `Option<Terminator>` to `Terminator` in `BasicBlockData`. More info in [this thread](https://rust-lang.zulipchat.com/#narrow/channel/131828-t-compiler/topic/vibe.20check.20-.20removing.20Option.20from.20Terminator/with/637588808).

MIR building sometimes needs to keep blocks unterminated, so we model this explicitly outside of the `BasicBlockData` structure by using `Either<BasicBlockData, UnterminatedBlockData>`. Notably, this type has the same layout as `BasicBlockData`, so we don't need to reallocate when finalizing the MIR body.

The relevant perf run is [the first one](rust-lang#165611 (comment)), the improvement is noise.

I also tried using custom block representation that would keep terminator optional in [the second perf run](rust-lang#165611 (comment)), but it was a regression, because the blocks have to be reallocated and copied when building is finished. See rust-lang#165611 (comment) for the analysis.
…miasko

Improve duplicate attribute diagnostics for active built-in attributes

Can be reviewed commit by commit, every commit passes tests.

This PR uses the same diagnostic that is used in attribute parsing, so it makes things more consistent and prettier.
…rary, r=Kobzol

Fix `x bench library/std`

Since rust-lang#149514, bootstrap was building std with the dist profile, but still using the default profile for `cargo bench`. This PR fixes that by ensuring that operations on std always use the dist profile.
…r-anchor, r=GuillaumeGomez

[rustdoc-frontend] Properly clear search state when sidebar link is clicked

Small fix (and test) for a bug I accidentally ran into.

Repro steps:
- Go to the i8 primitive's page (as an example, bug is not related to the specific page)
- Click the search button to open the search bar
- The search button gets replaced by the "exit" button
- Click any anchor link from the sidebar
- End up with the search bar closed but the button is still in the "exit" mode and not "search" mode, see screenshot:
<img width="2234" height="482" alt="image" src="https://github.com/user-attachments/assets/8b887caf-d4da-4298-96e9-bd2e884c3430" />
…, r=joboet

Disable no_threads compiler errors for Trusty targets

rust-lang#158782 introduced compile-time checks to verify that targets using the no-thread implementation of sync primitives are actually marked single-threaded. This broke the Trusty targets, which are not marked single-threaded but are using the no-threads implementations. Trusty userspace doesn't have threads, but we can't mark the target single-threaded because we need atomic operations for shared-memory IPC. This PR adds an exception to the `#[cfg]` on the `compile_error!` to allow Trusty to use the no-thread sync implementations.

Fixes rust-lang#165596
…=Urgau

rustdoc: Rename `--show-coverage` CLI flag into `--coverage`

Fixes rust-lang#159691.

r? @Urgau
@rust-bors rust-bors Bot added the rollup A PR which is a rollup label Nov 10, 2026
@rustbot rustbot added A-attributes Area: Attributes (`#[…]`, `#![…]`) A-run-make Area: port run-make Makefiles to rmake.rs A-rustc-dev-guide Area: rustc-dev-guide A-rustdoc-js Area: Rustdoc's JS front-end A-test-infra-minicore Area: `minicore` test auxiliary and `//@ add-minicore` A-thread Area: `std::thread` 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-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. labels Nov 10, 2026
@rustbot rustbot added the T-rustdoc-frontend Relevant to the rustdoc-frontend team, which will review and decide on the web UI/UX output. label Nov 10, 2026
@JonathanBrouwer

Copy link
Copy Markdown
Member Author

@bors r+ p=5 force

@rust-bors

rust-bors Bot commented Nov 10, 2026

Copy link
Copy Markdown
Contributor

📌 Commit bd909fb 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 Nov 10, 2026
@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 Nov 10, 2026
@rust-bors

rust-bors Bot commented Nov 10, 2026

Copy link
Copy Markdown
Contributor

☀️ Test successful - CI
Approved by: JonathanBrouwer
Duration: 3h 5m 21s
Pushing 9c56488 to main...

@rust-bors
rust-bors Bot merged commit 9c56488 into rust-lang:main Nov 10, 2026
15 checks passed
@rustbot rustbot added this to the 1.102.0 milestone Nov 10, 2026
@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 6f1c7ee (parent) -> 9c56488 (this PR)

Test differences

Show 5 test diffs

Stage 1

  • [assembly] tests/assembly-llvm/bpf-v4-atomics.rs: [missing] -> pass (J1)

Stage 2

  • [assembly] tests/assembly-llvm/bpf-v4-atomics.rs: [missing] -> pass (J0)

Additionally, 3 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 9c5648833e5ceb667a708d53c00b83ecc9e610d5 --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-gnu-debug: 1h 18m -> 2h 22m (+81.2%)
  2. test-x86_64-mingw-1: 1h 48m -> 3h 3m (+68.9%)
  3. test-x86_64-gnu-stdlib-semver-check: 10m 13s -> 17m 6s (+67.4%)
  4. test-x86_64-msvc-ext2: 59m 23s -> 1h 39m (+66.9%)
  5. test-x86_64-gnu: 1h 39m -> 2h 46m (+66.5%)
  6. test-i686-gnu-nopt-1: 1h 32m -> 2h 31m (+63.8%)
  7. test-x86_64-gnu-parallel-frontend: 1h 21m -> 2h 12m (+62.6%)
  8. test-x86_64-gnu-llvm-22: 35m 22s -> 54m 16s (+53.4%)
  9. test-i686-gnu-1: 1h 47m -> 2h 33m (+42.2%)
  10. test-x86_64-msvc-ext1: 1h 41m -> 2h 24m (+42.1%)
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 (9c56488): 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)

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

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: 483.518s -> 482.775s (-0.15%)
Artifact size: 407.10 MiB -> 406.47 MiB (-0.15%)

@rust-bors

rust-bors Bot commented Nov 11, 2026

Copy link
Copy Markdown
Contributor

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#165192 BPF: Define max/min atomic width per CPU version 43311d1dfc07056e7994373385ed870dbca2b471
(link)
#165611 Avoid terminator: None in MIR building fe3574c33aeb12f2c349687fd8667b6016877518
(link)
#165749 Improve duplicate attribute diagnostics for active built-in… ccebe7463290d02c641719bc7214128185dedab7
(link)
#165762 Fix x bench library/std c96e4b282f0bda1659cce095253e9f7e340c57b5
(link)
#165726 [rustdoc-frontend] Properly clear search state when sidebar… aeb66930f4ed9d1a276a3ef3e8b911b59ecadb04
(link)
#165728 Disable no_threads compiler errors for Trusty targets 657f8044e3360d2c3b5c8c45fb54f031e2befcfe
(link)
#165754 rustdoc: Rename --show-coverage CLI flag into --coverage 426686557f569c4f87ef75075abc4d3d7ec28013
(link)

parent commit: 6f1c7ee0ec

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

A-attributes Area: Attributes (`#[…]`, `#![…]`) A-run-make Area: port run-make Makefiles to rmake.rs A-rustc-dev-guide Area: rustc-dev-guide A-rustdoc-js Area: Rustdoc's JS front-end A-test-infra-minicore Area: `minicore` test auxiliary and `//@ add-minicore` A-thread Area: `std::thread` merged-by-bors This PR was explicitly merged by bors. 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-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.

9 participants