Skip to content

Rollup of 7 pull requests#158629

Merged
rust-bors[bot] merged 16 commits into
rust-lang:mainfrom
JonathanBrouwer:rollup-42QCg7x
Jul 1, 2026
Merged

Rollup of 7 pull requests#158629
rust-bors[bot] merged 16 commits into
rust-lang:mainfrom
JonathanBrouwer:rollup-42QCg7x

Conversation

@JonathanBrouwer

Copy link
Copy Markdown
Contributor

Successful merges:

r? @ghost

Create a similar rollup

theemathas and others added 16 commits June 14, 2026 17:34
ACP: <rust-lang/libs-team#799>
Tracking issue: <rust-lang#157345>

The docs are mostly copied from `Box::as_mut_ptr()`
Add built-in OpenEmbedded/Yocto Linux targets for x86_64, i686,
aarch64, armv7, and riscv64.

These targets inherit from the corresponding upstream Linux GNU
targets and provide OpenEmbedded-specific target triples and
default linker settings. They are intended to serve as base
targets for downstream Yocto/OpenEmbedded-generated targets,
allowing vendor-specific targets to override metadata (for
example, TARGET_VENDOR) while reusing a common target
configuration.

This reduces duplication in Yocto-based Rust integrations and
avoids maintaining downstream copies of largely identical target
specifications.

Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com>
The previous error message made it sound like stage != 2 was entirely disallowed
under CI. But actually it was only *implicit* stage != 2 which is disallowed -
an explicit `--stage 1` is permitted and is sometimes correct.

Minimal command to trigger the error message: `GITHUB_ACTIONS=true ./x test ui`
This allows us to depend on `rustc_resolve` from `rustc_incremental`. Important for rust-lang/rust-project-goals#641
lint on `core::ffi::c_void` as a return type

Fixes rust-lang#100972.

This PR introduces a new ~deny-by-default~ warn-by-default lint `c_void_returns` that fires on usage of `core::ffi::c_void` as a return type. This is never correct, and is a potential stumbling block for users coming from C.
…sonn

Implement `Box::as_non_null()`.

ACP: <rust-lang/libs-team#799>
Tracking issue: <rust-lang#157345>

The docs are mostly copied from `Box::as_mut_ptr()`

I also made a drive-by change to add `#[must_use]` to `Box::as_{ptr, mut_ptr}`.

I'm unsure what `#[rustc_never_returns_null_ptr]` and `#[rustc_as_ptr]` do. Should `Box::as_non_null()` be annotated with them?

r? libs-api
…vidtwco

rustc_target: Add OpenEmbedded/Yocto Linux base targets

Add built-in OpenEmbedded/Yocto Linux targets for x86_64, i686, aarch64, armv7, and riscv64.

These targets inherit from the corresponding upstream Linux GNU targets and provide OpenEmbedded-specific target triples and default linker settings. They are intended to serve as base targets for downstream Yocto/OpenEmbedded-generated targets, allowing vendor-specific targets to override metadata (for example, TARGET_VENDOR) while reusing a common target configuration.

This reduces duplication in Yocto-based Rust integrations and avoids maintaining downstream copies of largely identical target specifications.

**Tier 3 Policy Notes**

To cover the Tier 3 requirements:

> A tier 3 target must have a designated developer or developers

These targets have a designated maintainer: @DeepeshWR, as documented in the platform support documentation added by this PR.

> Targets must use naming consistent with any existing targets

The targets follow the existing target naming conventions and are derived from the corresponding upstream Linux GNU targets:

```
x86_64-oe-linux-gnu
aarch64-oe-linux-gnu
i686-oe-linux-gnu
armv7-oe-linux-gnueabihf
riscv64-oe-linux-gnu
```

The oe vendor component identifies OpenEmbedded/Yocto-based systems while preserving the established architecture/OS/ABI naming scheme.

> Tier 3 targets may have unusual requirements to build or use, but must not create legal issues or impose onerous legal terms for the Rust project or for Rust developers or users

These targets do not introduce any additional legal requirements. They use the standard OpenEmbedded/Yocto cross-compilation toolchains and are intended to behave similarly to the corresponding Linux GNU targets.

> Tier 3 targets should attempt to implement as much of the standard libraries as possible and appropriate

These targets inherit from the corresponding Linux GNU targets and support the standard library in the same manner as their upstream counterparts.

> The target must provide documentation for the Rust community explaining how to build for the target

This PR adds platform-support documentation describing the targets, maintainership, requirements, and intended usage.

> Tier 3 targets must not impose burden on the authors of pull requests, or other developers in the community, to maintain the target

The targets are thin wrappers around existing Linux GNU targets and primarily provide canonical OpenEmbedded/Yocto target triples and default linker configuration. They do not require additional CI infrastructure or special maintenance beyond keeping them aligned with their upstream Linux GNU base targets.

> Patches adding or updating tier 3 targets must not break any existing tier 2 or tier 1 target, and must not knowingly break another tier 3 target without approval of either the compiler team or the maintainers of the other tier 3 target

Noted.

> Tier 3 targets must be able to produce assembly using at least one of rustc's supported backends from any host target

These targets use LLVM through the existing Rust code generation pipeline, just like their corresponding Linux GNU targets.

r? @davidtwco
…gn-inlining, r=Urgau

[rustdoc] Fix handling of inlining of `no_inline` of foreign items

Fixes rust-lang#92379.

The magic of `reexport_chain` (and what happens when we forget to use it 😆 ).

r? @camelid
…_mut, r=clarfonthey

stabilize `feature(atomic_from_mut)`

Completed FCP: rust-lang#76314 (comment)
Closes rust-lang#76314
…-message, r=clubby789

Fix error message when rejecting implicit stage != 2 in CI

The previous error message made it sound like stage != 2 was entirely disallowed under CI. But actually it was only *implicit* stage != 2 which is disallowed - an explicit `--stage 1` is permitted and is sometimes correct.

Minimal command to trigger the error message: `GITHUB_ACTIONS=true ./x test ui`
…endents, r=petrochenkov

Remove dependency from `rustc_metadata` on `rustc_incremental`

This allows us to depend on `rustc_resolve` from `rustc_incremental`. Important for rust-lang/rust-project-goals#641
@rust-bors rust-bors Bot added the rollup A PR which is a rollup label Jun 30, 2026
@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-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. labels Jun 30, 2026
@JonathanBrouwer

Copy link
Copy Markdown
Contributor Author

@bors r+ rollup=never 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-2

@rust-bors

rust-bors Bot commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

📌 Commit 16cad03 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 Jun 30, 2026
@rust-bors

This comment has been minimized.

rust-bors Bot pushed a commit that referenced this pull request Jun 30, 2026
Rollup of 7 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-2
@rust-log-analyzer

Copy link
Copy Markdown
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)
  NO_DOWNLOAD_CI_LLVM: 1
  WIX: /d/a/rust/rust/wix
##[endgroup]
    Updating crates.io index
error: failed to get `hashbrown` as a dependency of package `indexmap v2.7.1`
    ... which satisfies dependency `indexmap = "^2.6.0"` of package `cookie_store v0.21.1`
    ... which satisfies dependency `cookie_store = "^0.21.1"` of package `ureq v3.0.8`
    ... which satisfies dependency `ureq = "^3"` of package `citool v0.1.0 (D:\a\rust\rust\src\ci\citool)`

Caused by:
  failed to load source for dependency `hashbrown`

Caused by:

@rust-log-analyzer

Copy link
Copy Markdown
Collaborator

The job x86_64-gnu-tools failed! Check out the build log: (web) (plain enhanced) (plain)

Click to see the possible cause of the failure (guessed by this bot)
....................................F.......       (144/144)

======== tests/rustdoc-gui/trait-with-bounds.goml ========

[ERROR] trait-with-bounds output:
Runtime.callFunctionOn timed out. Increase the 'protocolTimeout' setting in launch/connect calls for a higher timeout if needed.
stack: ProtocolError: Runtime.callFunctionOn timed out. Increase the 'protocolTimeout' setting in launch/connect calls for a higher timeout if needed.
    at <instance_members_initializer> (file:///checkout/obj/build/x86_64-unknown-linux-gnu/test/rustdoc-gui/node_modules/puppeteer-core/lib/puppeteer/common/CallbackRegistry.js:102:14)
    at new Callback (file:///checkout/obj/build/x86_64-unknown-linux-gnu/test/rustdoc-gui/node_modules/puppeteer-core/lib/puppeteer/common/CallbackRegistry.js:106:16)
    at CallbackRegistry.create (file:///checkout/obj/build/x86_64-unknown-linux-gnu/test/rustdoc-gui/node_modules/puppeteer-core/lib/puppeteer/common/CallbackRegistry.js:25:26)
    at Connection._rawSend (file:///checkout/obj/build/x86_64-unknown-linux-gnu/test/rustdoc-gui/node_modules/puppeteer-core/lib/puppeteer/cdp/Connection.js:118:26)
    at CdpCDPSession.send (file:///checkout/obj/build/x86_64-unknown-linux-gnu/test/rustdoc-gui/node_modules/puppeteer-core/lib/puppeteer/cdp/CdpSession.js:72:14)
    at #evaluate (file:///checkout/obj/build/x86_64-unknown-linux-gnu/test/rustdoc-gui/node_modules/puppeteer-core/lib/puppeteer/cdp/ExecutionContext.js:360:50)
    at ExecutionContext.evaluate (file:///checkout/obj/build/x86_64-unknown-linux-gnu/test/rustdoc-gui/node_modules/puppeteer-core/lib/puppeteer/cdp/ExecutionContext.js:274:36)
    at IsolatedWorld.evaluate (file:///checkout/obj/build/x86_64-unknown-linux-gnu/test/rustdoc-gui/node_modules/puppeteer-core/lib/puppeteer/cdp/IsolatedWorld.js:102:30)
    at CdpFrame.evaluate (file:///checkout/obj/build/x86_64-unknown-linux-gnu/test/rustdoc-gui/node_modules/puppeteer-core/lib/puppeteer/api/Frame.js:359:43)
    at CdpFrame.<anonymous> (file:///checkout/obj/build/x86_64-unknown-linux-gnu/test/rustdoc-gui/node_modules/puppeteer-core/lib/puppeteer/util/decorators.js:101:27)



<= doc-ui tests done: 143 succeeded, 1 failed, 0 filtered out

@rust-bors rust-bors Bot added the S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. label Jun 30, 2026
@rust-bors

rust-bors Bot commented Jun 30, 2026

Copy link
Copy Markdown
Contributor

💔 Test for 3bdb179 failed: CI. Failed job:

@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 Jul 1, 2026
@rust-bors

rust-bors Bot commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

☀️ Test successful - CI
Approved by: JonathanBrouwer
Duration: 3h 14m 33s
Pushing 17aa775 to main...

@rust-bors rust-bors Bot merged commit 17aa775 into rust-lang:main Jul 1, 2026
10 of 15 checks passed
@rustbot rustbot removed the S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. label Jul 1, 2026
@rustbot rustbot added this to the 1.98.0 milestone Jul 1, 2026
@rust-timer

Copy link
Copy Markdown
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#156379 lint on core::ffi::c_void as a return type ce4cf1d9d86f1483f5628574545ad0492013bf41 (link)
#157347 Implement Box::as_non_null(). 031c5b994535f528c241cc6291bd82f2fcc36ec5 (link)
#157650 rustc_target: Add OpenEmbedded/Yocto Linux base targets 7a029e0756d5c10cf0038f0ade74e1cacc608d72 (link)
#158569 [rustdoc] Fix handling of inlining of no_inline of foreig… f15cbcd55bcb272aff898787c557126734183903 (link)
#158573 stabilize feature(atomic_from_mut) 34d44e449fb42013a1bef62f2eb4f36a7a7fa106 (link)
#158614 Fix error message when rejecting implicit stage != 2 in CI dcd0aa7332791948d1c2b726a48f2ada0f317187 (link)
#158616 Remove dependency from rustc_metadata on `rustc_increment… 09d0804232dffcc60401aa6822dcdbf7b59ef868 (link)

previous master: f46ec5218f

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

@github-actions

github-actions Bot commented Jul 1, 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 f46ec52 (parent) -> 17aa775 (this PR)

Test differences

Show 1381 test diffs

Stage 0

  • spec::tests::aarch64_oe_linux_gnu: [missing] -> pass (J1)
  • spec::tests::armv7_oe_linux_gnueabihf: [missing] -> pass (J1)
  • spec::tests::i686_oe_linux_gnu: [missing] -> pass (J1)
  • spec::tests::riscv64_oe_linux_gnu: [missing] -> pass (J1)
  • spec::tests::x86_64_oe_linux_gnu: [missing] -> pass (J1)

Stage 1

  • [assembly] tests/assembly-llvm/targets/targets-elf.rs#aarch64_oe_linux_gnu: [missing] -> pass (J1)
  • [assembly] tests/assembly-llvm/targets/targets-elf.rs#armv7_oe_linux_gnueabihf: [missing] -> pass (J1)
  • [assembly] tests/assembly-llvm/targets/targets-elf.rs#i686_oe_linux_gnu: [missing] -> pass (J1)
  • [assembly] tests/assembly-llvm/targets/targets-elf.rs#riscv64_oe_linux_gnu: [missing] -> pass (J1)
  • [assembly] tests/assembly-llvm/targets/targets-elf.rs#x86_64_oe_linux_gnu: [missing] -> pass (J1)
  • [rustdoc-html] tests/rustdoc-html/reexport/inline-foreign-no_inline.rs: [missing] -> pass (J1)
  • [rustdoc-html] tests/rustdoc-html/reexport/inline-no_inline.rs: [missing] -> pass (J1)
  • spec::tests::aarch64_oe_linux_gnu: [missing] -> pass (J3)
  • spec::tests::armv7_oe_linux_gnueabihf: [missing] -> pass (J3)
  • spec::tests::i686_oe_linux_gnu: [missing] -> pass (J3)
  • spec::tests::riscv64_oe_linux_gnu: [missing] -> pass (J3)
  • spec::tests::x86_64_oe_linux_gnu: [missing] -> pass (J3)
  • [ui (polonius)] tests/ui/lint/c-void-returns.rs: [missing] -> pass (J4)
  • [ui] tests/ui/lint/c-void-returns.rs: [missing] -> pass (J5)

Stage 2

  • [rustdoc-html] tests/rustdoc-html/reexport/inline-foreign-no_inline.rs: [missing] -> pass (J0)
  • [rustdoc-html] tests/rustdoc-html/reexport/inline-no_inline.rs: [missing] -> pass (J0)
  • [assembly] tests/assembly-llvm/targets/targets-elf.rs#aarch64_oe_linux_gnu: [missing] -> pass (J2)
  • [assembly] tests/assembly-llvm/targets/targets-elf.rs#armv7_oe_linux_gnueabihf: [missing] -> pass (J2)
  • [assembly] tests/assembly-llvm/targets/targets-elf.rs#i686_oe_linux_gnu: [missing] -> pass (J2)
  • [assembly] tests/assembly-llvm/targets/targets-elf.rs#riscv64_oe_linux_gnu: [missing] -> pass (J2)
  • [assembly] tests/assembly-llvm/targets/targets-elf.rs#x86_64_oe_linux_gnu: [missing] -> pass (J2)
  • [ui] tests/ui/lint/c-void-returns.rs: [missing] -> pass (J6)

Additionally, 1354 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 17aa77551e89d5e80d4b506c9a32fc151264b8e4 --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-debug: 2h 15m -> 1h 19m (-41.0%)
  2. dist-x86_64-musl: 1h 36m -> 2h 15m (+40.4%)
  3. x86_64-msvc-1: 2h 41m -> 1h 39m (-38.0%)
  4. x86_64-gnu-stable: 2h -> 2h 37m (+30.2%)
  5. dist-aarch64-apple: 2h 28m -> 1h 51m (-25.1%)
  6. dist-various-1: 1h 14m -> 59m 9s (-20.5%)
  7. aarch64-apple: 3h 47m -> 3h 7m (-17.7%)
  8. aarch64-apple-macos-26: 3h 39m -> 3h 2m (-17.0%)
  9. tidy: 3m 11s -> 2m 52s (-10.1%)
  10. arm-android: 1h 40m -> 1h 49m (+9.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 (17aa775): 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.3% [0.3%, 0.3%] 1
Improvements ✅
(primary)
-8.5% [-8.5%, -8.5%] 1
Improvements ✅
(secondary)
-8.5% [-8.5%, -8.5%] 1
All ❌✅ (primary) -8.5% [-8.5%, -8.5%] 1

Max RSS (memory usage)

Results (primary -4.8%, secondary -4.3%)

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)
-4.8% [-7.1%, -2.4%] 2
Improvements ✅
(secondary)
-4.3% [-6.3%, -2.4%] 2
All ❌✅ (primary) -4.8% [-7.1%, -2.4%] 2

Cycles

Results (primary -4.3%, secondary -7.7%)

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)
-4.3% [-6.7%, -1.9%] 2
Improvements ✅
(secondary)
-7.7% [-7.7%, -7.7%] 1
All ❌✅ (primary) -4.3% [-6.7%, -1.9%] 2

Binary size

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

Bootstrap: 485.565s -> 486.291s (0.15%)
Artifact size: 393.29 MiB -> 393.72 MiB (0.11%)

@panstromek

panstromek commented Jul 1, 2026

Copy link
Copy Markdown
Contributor

include-blob regression is probably bimodal noise again, improvement in serde doc is probably #158569. I started a perf run to confirm that (probably not necessary but the queue is empty and I wanted to try out the doc flavor of the command :) )

@rustbot label: +perf-regression-triaged

@rustbot rustbot added the perf-regression-triaged The performance regression has been triaged. label Jul 1, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

merged-by-bors This PR was explicitly merged by bors. perf-regression Performance regression. perf-regression-triaged The performance regression has been triaged. 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.