Skip to content

Rollup of 8 pull requests#159516

Merged
rust-bors[bot] merged 17 commits into
rust-lang:mainfrom
JonathanBrouwer:rollup-XY9SezB
Jul 18, 2026
Merged

Rollup of 8 pull requests#159516
rust-bors[bot] merged 17 commits into
rust-lang:mainfrom
JonathanBrouwer:rollup-XY9SezB

Conversation

@JonathanBrouwer

Copy link
Copy Markdown
Contributor

Successful merges:

r? @ghost

Create a similar rollup

DeepeshWR and others added 17 commits July 16, 2026 07:49
The `scoped_two_small_structs` test expects `sub sp, sp, rust-lang#48` on
aarch64, which assumes the frame pointer (x29) is saved. Custom targets
that don't set `frame-pointer: non-leaf` (e.g., OpenEmbedded/Yocto's
`aarch64-poky-linux-gnu`) omit x29, producing `sub sp, sp, rust-lang#32` instead.

Add `-Cforce-frame-pointers=yes` to the aarch64 revision so the test
produces consistent codegen regardless of the target's default frame
pointer policy.

Signed-off-by: Deepesh Varatharajan <Deepesh.Varatharajan@windriver.com>
A failed open of \\.\NUL for Stdio::Null surfaced as a bare OS error
(usually NotFound), which reads as if the spawned program is missing.
Wrap it with the operation and stream name, preserving the ErrorKind.
A trait bound `T: Fn() -> T` is non-sensical code, point that out:

```
error[E0271]: expected `{closure@trait-bound-expects-closure-returns-itself.rs:8:25}` to return `{closure@trait-bound-expects-closure-returns-itself.rs:8:25}`, but it returns `{integer}`
  --> $DIR/trait-bound-expects-closure-returns-itself.rs:8:28
   |
LL |     closure_ret_closure(|| 4);
   |                         -- ^ expected closure, found integer
   |                         |
   |                         the expected closure
   |
note: a bound in `closure_ret_closure` requires that a closure return itself, which is not possible
  --> $DIR/trait-bound-expects-closure-returns-itself.rs:1:39
   |
LL | fn closure_ret_closure<T: FnOnce() -> T>(f: T) -> T {
   |                                       ^ this requires the closure to return itself
...
LL |     closure_ret_closure(|| 4);
   |                         ---- this closure would have to return itself
   = note: expected closure `{closure@$DIR/trait-bound-expects-closure-returns-itself.rs:8:25: 8:27}`
                 found type `{integer}`
```
In the early days of Unicode, many systems adopted it by storing in-memory
strings in (roughly) `Vec<u16>`, encoded as UCS-2 / UTF-16 / WTF-16.
The “natural” way to index such strings or measure their length is counting
UTF-16 code units. In some cases, such lengths or offsets found their way
in protocols or APIs, such that even a Rust implementation that uses `&str`
internally needs to count 16-bit code units for compatibility.
For example this comes up in Servo’s implementation of some DOM APIs.

One way to convert from an `&str` index (counted 8-bit code units) is:

```rust
let index_16bit = string[..i].encode_utf16().count();
```

Before this PR, the default `Iterator::count` relies on `Iterator::next`
which decodes UTF-8 and encodes to UTF-16, doing more work than needed.
Instead, this PR matches on bit patterns in the underlying UTF-8 string.

For comparison, `str::Chars` already has a sophisticated impl
for `Iterator::count` in `library/core/src/str/count.rs`.
Furthermore, populate `tests/run-make/rustdoc/doctest/` with doctest
run-make tests and `tests/run-make/rustdoc/scrape-example/` with scrape
example run-make tests.
…ext, r=Darksonn

Windows: add context when opening NUL for child stdio fails

Opening `\\.\NUL` for `Stdio::Null` can fail in some environments, and `Command::spawn`/`output()` passes the raw OS error through. In the reported case that was `NotFound`, which looks exactly like the program itself being missing. Add context saying what failed to open and for which stream:

```
failed to open NUL device for child stdin: The system cannot find the file specified. (os error 2)
```

The `ErrorKind` is kept. `raw_os_error()` on this path becomes `None` since the payload is now a message string. I don't see a way to make opening NUL fail in CI, so no test; verified by hand in a local build by pointing the open at a bogus device name and checking the error out of `Command::output()`.

Fixes rust-lang#157049
…oboet

Add explicit `Iterator::count` impl for `str::EncodeUtf16`

In the early days of Unicode, many systems adopted it by storing in-memory strings in (roughly) `Vec<u16>`, encoded as UCS-2 / UTF-16 / WTF-16. The “natural” way to index such strings or measure their length is counting UTF-16 code units. In some cases, such lengths or offsets found their way in protocols or APIs, such that even a Rust implementation that uses `&str` internally needs to count 16-bit code units for compatibility. For example this comes up in Servo’s implementation of some DOM APIs.

One way to convert from an `&str` index (counted 8-bit code units) is:

```rust
let index_16bit = string[..i].encode_utf16().count();
```

Before this PR, the default `Iterator::count` relies on `Iterator::next` which decodes UTF-8 and encodes to UTF-16, doing more work than needed. Instead, this PR matches on bit patterns in the underlying UTF-8 string.

For comparison, `str::Chars` already has a sophisticated impl for `Iterator::count` in `library/core/src/str/count.rs`.
…c, r=notriddle

Move rustdoc run-make tests into new `tests/run-make/rustdoc/`

Furthermore, populate `tests/run-make/rustdoc/doctest/` with doctest run-make tests and `tests/run-make/rustdoc/scrape-example/` with scrape-example run-make tests.

For context we currently have 11 doctest run-make tests + 8 scrape-example run-make tests + 24 other rustdoc run-make tests = 43 rustdoc run-make tests in total.

**Motivation**: Sorta obvious but

1. I want to be able to just call e.g., `./x t tests/run-make/rustdoc/doctest tests/rustdoc-ui/doctest` when working on doctest internals to quickly see if anything broke instead of having to execute all run-make tests "every time I make a small change"
2. having them in one official place makes it a lot easier to spot which areas might need more coverage, to take inspiration from existing rustdoc run-make tests, to find existing test files that one can extend instead of creating a whole new run-make test, etc.

r? rustdoc
…ing, r=clarfonthey

Move `std::io::read_to_string` to `alloc::io`

ACP: rust-lang/libs-team#755
Tracking issue: rust-lang#154046
Split From: rust-lang#156527
~~Blocked On: rust-lang#158544

## Description

Moves `std::io::read_to_string` to `alloc::io`. This is a trivial move. Blocked on rust-lang#158544.

---

## Notes

* No AI tooling of any kind was used during the creation of this PR.
* Please see rust-lang#154046 (comment) for a review order and broader context for this PR.
…arch64-stack-check, r=mati865

tests/assembly-llvm: pin frame pointer in issue-141649 aarch64 test

The `scoped_two_small_structs` test expects `sub sp, sp, rust-lang#48` on
aarch64, which assumes the frame pointer (x29) is saved. Custom targets
that don't set `frame-pointer: non-leaf` (e.g., OpenEmbedded/Yocto's
`aarch64-poky-linux-gnu`) omit x29, producing `sub sp, sp, rust-lang#32` instead.

Add `-Cforce-frame-pointers=yes` to the aarch64 revision so the test
produces consistent codegen regardless of the target's default frame
pointer policy.
Detect when trait bound requires closure to return itself

A trait bound `T: Fn() -> T` is non-sensical code, point that out:

```
error[E0271]: expected `{closure@trait-bound-expects-closure-returns-itself.rs:8:25}` to return `{closure@trait-bound-expects-closure-returns-itself.rs:8:25}`, but it returns `{integer}`
  --> $DIR/trait-bound-expects-closure-returns-itself.rs:8:28
   |
LL |     closure_ret_closure(|| 4);
   |                         -- ^ expected closure, found integer
   |                         |
   |                         the expected closure
   |
note: a bound in `closure_ret_closure` requires that a closure return itself, which is not possible
  --> $DIR/trait-bound-expects-closure-returns-itself.rs:1:39
   |
LL | fn closure_ret_closure<T: FnOnce() -> T>(f: T) -> T {
   |                                       ^ this requires the closure to return itself
...
LL |     closure_ret_closure(|| 4);
   |                         ---- this closure would have to return itself
   = note: expected closure `{closure@$DIR/trait-bound-expects-closure-returns-itself.rs:8:25: 8:27}`
                 found type `{integer}`
```

This was highlighted in rust-lang#80638. We'd since improved the output enough to close the ticket, but I wanted to ensure we had something even clearer.
Fix string indexing in diagnostic format strings

Fixes rust-lang#159252

This also affects beta.
…youxu

Move compiletest CLI parsing to `cli.rs`

Separated out of rust-lang#159451.
@rust-bors rust-bors Bot added the rollup A PR which is a rollup label Jul 18, 2026
@rustbot rustbot added A-compiletest Area: The compiletest test runner A-run-make Area: port run-make Makefiles to rmake.rs A-rustc-dev-guide Area: rustc-dev-guide 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-libs Relevant to the library team, which will review and decide on the PR/issue. labels Jul 18, 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-*

@rust-bors

rust-bors Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

📌 Commit 2fa71af 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 Jul 18, 2026
@rust-bors

This comment has been minimized.

rust-bors Bot pushed a commit that referenced this pull request Jul 18, 2026
Rollup of 8 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-*
@rust-bors

This comment has been minimized.

@rust-bors

rust-bors Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

☀️ Try build successful (CI)
Build commit: 914e579 (914e579297a2124c26402fef52d5911b78d01a2c)
Base parent: b26c8ef (b26c8ef0535b2de24a0af4048370caf449eebabd)

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

rust-bors Bot commented Jul 18, 2026

Copy link
Copy Markdown
Contributor

☀️ Test successful - CI
Approved by: JonathanBrouwer
Duration: 3h 25m 29s
Pushing eff8269 to main...

@rust-bors
rust-bors Bot merged commit eff8269 into rust-lang:main Jul 18, 2026
15 checks passed
@rustbot rustbot added this to the 1.99.0 milestone Jul 18, 2026
@rust-timer

Copy link
Copy Markdown
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#159425 Windows: add context when opening NUL for child stdio fails 69f56ce608ecdb09e577c49d3f75cc8eb1773aae (link)
#159467 Add explicit Iterator::count impl for str::EncodeUtf16 f484a4c7432d7259735525cbd006735e97176656 (link)
#157860 Move rustdoc run-make tests into new `tests/run-make/rustdo… 2ee6b16a242a569d45fa51e35d20a0891053b1ff (link)
#158545 Move std::io::read_to_string to alloc::io 4f54b194f3bba9e8b10084b765022a471a733185 (link)
#159328 tests/assembly-llvm: pin frame pointer in issue-141649 aarc… 88799c5596184e8f509aaf4c17c371425a706800 (link)
#159459 Detect when trait bound requires closure to return itself b5e23ee968ea0304d24346e84ae01c123823d045 (link)
#159470 Fix string indexing in diagnostic format strings b79eb33ee58dc0409c93791641383031d5f82f91 (link)
#159500 Move compiletest CLI parsing to cli.rs 8b5690bdc37e4499fb37dd8e4c7423c2eff3f0f9 (link)

previous master: 8a3308ed50

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

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 8a3308e (parent) -> eff8269 (this PR)

Test differences

Show 306 test diffs

Stage 1

  • [run-make] tests/run-make/doctests-keep-binaries-2024: pass -> [missing] (J0)
  • [run-make] tests/run-make/doctests-runtool: pass -> [missing] (J0)
  • [run-make] tests/run-make/rustdoc-cfgspec-parsing: pass -> [missing] (J0)
  • [run-make] tests/run-make/rustdoc-doctest-output-format: pass -> [missing] (J0)
  • [run-make] tests/run-make/rustdoc-error-lines: pass -> [missing] (J0)
  • [run-make] tests/run-make/rustdoc-io-error: pass -> [missing] (J0)
  • [run-make] tests/run-make/rustdoc-json-external-crate-path: pass -> [missing] (J0)
  • [run-make] tests/run-make/rustdoc-map-file: pass -> [missing] (J0)
  • [run-make] tests/run-make/rustdoc-merge-directory: pass -> [missing] (J0)
  • [run-make] tests/run-make/rustdoc-merge-no-input-finalize: pass -> [missing] (J0)
  • [run-make] tests/run-make/rustdoc-output-stdout: pass -> [missing] (J0)
  • [run-make] tests/run-make/rustdoc-scrape-examples-macros: pass -> [missing] (J0)
  • [run-make] tests/run-make/rustdoc-scrape-examples-multiple: pass -> [missing] (J0)
  • [run-make] tests/run-make/rustdoc-scrape-examples-ordering: pass -> [missing] (J0)
  • [run-make] tests/run-make/rustdoc-scrape-examples-test: pass -> [missing] (J0)
  • [run-make] tests/run-make/rustdoc-scrape-examples-whitespace: pass -> [missing] (J0)
  • [run-make] tests/run-make/rustdoc-test-builder: pass -> [missing] (J0)
  • [run-make] tests/run-make/rustdoc-themes: pass -> [missing] (J0)
  • [run-make] tests/run-make/rustdoc-with-out-dir-option: pass -> [missing] (J0)
  • [run-make] tests/run-make/rustdoc-with-short-out-dir-option: pass -> [missing] (J0)
  • [run-make] tests/run-make/rustdoc/default-output: [missing] -> pass (J0)
  • [run-make] tests/run-make/rustdoc/determinism: [missing] -> pass (J0)
  • [run-make] tests/run-make/rustdoc/doctest/junit: [missing] -> ignore (ignored when the bootstrapping stage is stage1 ((rustdoc depends on a fix in libtest))) (J0)
  • [run-make] tests/run-make/rustdoc/doctest/keep-binaries: [missing] -> pass (J0)
  • [run-make] tests/run-make/rustdoc/doctest/output-format: [missing] -> pass (J0)
  • [run-make] tests/run-make/rustdoc/doctest/runtool: [missing] -> pass (J0)
  • [run-make] tests/run-make/rustdoc/doctest/test_harness: [missing] -> pass (J0)
  • [run-make] tests/run-make/rustdoc/error-lines: [missing] -> pass (J0)
  • [run-make] tests/run-make/rustdoc/flag-namespaces-from-rustc: [missing] -> pass (J0)
  • [run-make] tests/run-make/rustdoc/io-error: [missing] -> pass (J0)
  • [run-make] tests/run-make/rustdoc/merge-dir-alias: [missing] -> pass (J0)
  • [run-make] tests/run-make/rustdoc/out-dir-option-short: [missing] -> pass (J0)
  • [run-make] tests/run-make/rustdoc/stdin: [missing] -> pass (J0)
  • [run-make] tests/run-make/rustdoc/themes: [missing] -> pass (J0)
  • [run-make] tests/run-make/rustdoc/verify-output-files: [missing] -> pass (J0)
  • [ui (polonius)] tests/ui/closure-expected-type/trait-bound-expects-closure-returns-itself.rs: [missing] -> pass (J10)

Stage 2

  • [run-make] tests/run-make/rustdoc-error-lines: pass -> [missing] (J1)
  • [run-make] tests/run-make/rustdoc-merge-no-input-finalize: pass -> [missing] (J1)
  • [run-make] tests/run-make/rustdoc-output-path: pass -> [missing] (J1)
  • [run-make] tests/run-make/rustdoc-output-stdout: pass -> [missing] (J1)
  • [run-make] tests/run-make/rustdoc-scrape-examples-multiple: pass -> [missing] (J1)
  • [run-make] tests/run-make/rustdoc-scrape-examples-ordering: pass -> [missing] (J1)
  • [run-make] tests/run-make/rustdoc-scrape-examples-remap: pass -> [missing] (J1)
  • [run-make] tests/run-make/rustdoc-verify-output-files: pass -> [missing] (J1)
  • [run-make] tests/run-make/rustdoc-with-out-dir-option: pass -> [missing] (J1)
  • [run-make] tests/run-make/rustdoc-with-output-option: pass -> [missing] (J1)
  • [run-make] tests/run-make/rustdoc/determinism: [missing] -> pass (J1)
  • [run-make] tests/run-make/rustdoc/doctest/test-builder: [missing] -> pass (J1)
  • [run-make] tests/run-make/rustdoc/error-lines: [missing] -> pass (J1)
  • [run-make] tests/run-make/rustdoc/scrape-examples/dep-info: [missing] -> pass (J1)
  • [run-make] tests/run-make/rustdoc/scrape-examples/invalid-expr: [missing] -> pass (J1)
  • [run-make] tests/run-make/rustdoc/scrape-examples/remap: [missing] -> pass (J1)
  • [run-make] tests/run-make/rustdoc/scrape-examples/test: [missing] -> pass (J1)
  • [run-make] tests/run-make/rustdoc/scrape-examples/whitespace: [missing] -> pass (J1)
  • [run-make] tests/run-make/rustdoc/themes: [missing] -> pass (J1)
  • [run-make] tests/run-make/rustdoc/verify-output-files: [missing] -> pass (J1)
  • [run-make] tests/run-make/rustdoc-dep-info: ignore (ignored if target does not support std) -> [missing] (J2)
  • [run-make] tests/run-make/rustdoc-error-lines: ignore (ignored if target does not support std) -> [missing] (J2)
  • [run-make] tests/run-make/rustdoc-io-error: ignore (ignored if target does not support std) -> [missing] (J2)
  • [run-make] tests/run-make/rustdoc-merge-directory: ignore (ignored if target does not support std) -> [missing] (J2)
  • [run-make] tests/run-make/rustdoc-merge-no-input-finalize: ignore (ignored if target does not support std) -> [missing] (J2)
  • [run-make] tests/run-make/rustdoc-output-stdout: ignore (ignored if target does not support std) -> [missing] (J2)
  • [run-make] tests/run-make/rustdoc-scrape-examples-ordering: ignore (ignored if target does not support std) -> [missing] (J2)
  • [run-make] tests/run-make/rustdoc-scrape-examples-test: ignore (ignored if target does not support std) -> [missing] (J2)
  • [run-make] tests/run-make/rustdoc-with-out-dir-option: ignore (ignored if target does not support std) -> [missing] (J2)
  • [run-make] tests/run-make/rustdoc-with-output-option: ignore (ignored if target does not support std) -> [missing] (J2)
  • [run-make] tests/run-make/rustdoc-with-short-out-dir-option: ignore (ignored if target does not support std) -> [missing] (J2)
  • [run-make] tests/run-make/rustdoc/io-error: [missing] -> ignore (ignored if target does not support std) (J2)
  • [run-make] tests/run-make/rustdoc/out-dir-option: [missing] -> ignore (ignored if target does not support std) (J2)
  • [run-make] tests/run-make/rustdoc/out-dir-option-short: [missing] -> ignore (ignored if target does not support std) (J2)
  • [run-make] tests/run-make/rustdoc/scrape-examples/dep-info: [missing] -> ignore (ignored if target does not support std) (J2)
  • [run-make] tests/run-make/rustdoc/scrape-examples/remap: [missing] -> ignore (ignored if target does not support std) (J2)
  • [run-make] tests/run-make/rustdoc/verify-output-files: [missing] -> ignore (ignored if target does not support std) (J2)
  • [run-make] tests/run-make/rustdoc-json-external-crate-path: pass -> [missing] (J3)
  • [run-make] tests/run-make/rustdoc-shared-flags: pass -> [missing] (J3)
  • [run-make] tests/run-make/rustdoc-io-error: ignore (ignored when the architecture is arm) -> [missing] (J4)
  • [ui] tests/ui/closure-expected-type/trait-bound-expects-closure-returns-itself.rs: [missing] -> pass (J5)
  • [ui] tests/ui/diagnostic_namespace/unicode.rs: [missing] -> pass (J5)
  • [run-make] tests/run-make/doctests-keep-binaries: ignore (ignored when cross-compiling (attempts to run the doctests)) -> [missing] (J6)
  • [run-make] tests/run-make/doctests-runtool: ignore (ignored when cross-compiling ((needs to run host tool binary))) -> [missing] (J6)
  • [run-make] tests/run-make/doctests-test_harness: ignore (ignored when cross-compiling ((needs to run host tool binary))) -> [missing] (J6)
  • [run-make] tests/run-make/rustdoc-cfgspec-parsing: ignore (ignored when cross-compiling) -> [missing] (J6)
  • [run-make] tests/run-make/rustdoc-doctest-output-format: ignore (ignored when cross-compiling) -> [missing] (J6)
  • [run-make] tests/run-make/rustdoc/doctest/tempdir-removal: [missing] -> ignore (ignored when cross-compiling) (J6)
  • [run-make] tests/run-make/rustdoc/scrape-examples/macros: [missing] -> ignore (ignored when cross-compiling) (J6)
  • [run-make] tests/run-make/rustdoc/stdin: [missing] -> ignore (ignored when cross-compiling ((needs to run doctests))) (J6)
  • [run-make] tests/run-make/rustdoc/io-error: [missing] -> ignore (ignored when the operating system is windows (the set_readonly functions doesn't work on folders.)) (J7)
  • [run-make] tests/run-make/doctests-keep-binaries: pass -> [missing] (J8)
  • [run-make] tests/run-make/doctests-runtool: pass -> [missing] (J8)
  • [run-make] tests/run-make/doctests-test_harness: pass -> [missing] (J8)
  • [run-make] tests/run-make/rustdoc-cfgspec-parsing: pass -> [missing] (J8)
  • [run-make] tests/run-make/rustdoc-tempdir-removal: pass -> [missing] (J8)
  • [run-make] tests/run-make/rustdoc-test-args: pass -> [missing] (J8)
  • [run-make] tests/run-make/rustdoc/cfg-spec-parsing: [missing] -> pass (J8)
  • [run-make] tests/run-make/rustdoc/doctest/output-format: [missing] -> pass (J8)
  • [run-make] tests/run-make/rustdoc/scrape-examples/macros: [missing] -> pass (J8)
  • [run-make] tests/run-make/rustdoc/stdin: [missing] -> pass (J8)
  • [run-make] tests/run-make/stdin-rustdoc: pass -> [missing] (J8)
  • [run-make] tests/run-make/rustdoc-search-load-itemtype: ignore (ignored when cross-compiling) -> [missing] (J9)
  • [run-make] tests/run-make/rustdoc/search-load-itemtype: [missing] -> ignore (ignored when cross-compiling) (J9)

(and 164 additional test diffs)

Additionally, 42 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 eff8269f797067c30555e77f160ec84c0ed15cd9 --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-i686-mingw: 1h 50m -> 2h 44m (+48.9%)
  2. dist-arm-linux-gnueabi: 1h 2m -> 1h 30m (+44.5%)
  3. x86_64-gnu-gcc-core-tests: 8m 35s -> 12m 13s (+42.2%)
  4. aarch64-apple-macos-26: 2h 31m -> 3h 18m (+31.1%)
  5. dist-various-1: 58m 46s -> 1h 14m (+26.8%)
  6. i686-msvc-2: 2h 5m -> 1h 32m (-26.3%)
  7. x86_64-gnu-gcc: 1h 6m -> 52m 46s (-21.2%)
  8. i686-msvc-1: 2h 54m -> 2h 19m (-20.3%)
  9. arm-android: 1h 41m -> 1h 21m (-19.8%)
  10. dist-powerpc64le-linux-musl: 1h 18m -> 1h 34m (+19.5%)
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 (eff8269): comparison URL.

Overall result: ✅ improvements - 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
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-0.1% [-0.2%, -0.1%] 2
All ❌✅ (primary) - - 0

Max RSS (memory usage)

Results (primary 0.4%, secondary 2.8%)

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

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

Cycles

Results (secondary 2.4%)

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

Binary size

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

Bootstrap: 485.656s -> 489.126s (0.71%)
Artifact size: 390.03 MiB -> 389.52 MiB (-0.13%)

@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)
  COMMIT_MESSAGE: cargo update 
##[endgroup]
Downloading single artifact
Preparing to download the following artifacts:
- Cargo-lock (ID: 8436105363, Size: 49564, Expected Digest: sha256:a34f4830ff70b026bcbb447f4cd7c86ee07972c8edbd38c311dc4c9cc3769114)
Redirecting to blob download url: https://productionresultssa15.blob.core.windows.net/actions-results/51ca82ac-39f6-4847-a847-40e857ed71b2/workflow-job-run-a348631e-cab7-5dab-8d76-c81f28fcdff7/artifacts/858175980ba8726bab9f963fd06060d5199d874bbd735e523e2d990d354f8c0b.zip
Starting download of artifact to: /home/runner/work/rust/rust
(node:2109) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
SHA256 digest of downloaded artifact is a34f4830ff70b026bcbb447f4cd7c86ee07972c8edbd38c311dc4c9cc3769114
Artifact download completed successfully.
Total of 1 artifact(s) downloaded
Download artifact has finished successfully
---
  COMMIT_MESSAGE: cargo update 
##[endgroup]
Downloading single artifact
Preparing to download the following artifacts:
- cargo-updates (ID: 8436105440, Size: 3049, Expected Digest: sha256:e1fc077757e01c27ab1b634f09c007957ca6cf0a32d4b765e8ecc0adf2d29ce0)
Redirecting to blob download url: https://productionresultssa15.blob.core.windows.net/actions-results/51ca82ac-39f6-4847-a847-40e857ed71b2/workflow-job-run-a348631e-cab7-5dab-8d76-c81f28fcdff7/artifacts/ce9034d4568b3430f906da1368ae1cf3e14ef1542859eb2e8d635c0876371f53.zip
Starting download of artifact to: /home/runner/work/rust/rust
(node:2121) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.
(Use `node --trace-deprecation ...` to show where the warning was created)
SHA256 digest of downloaded artifact is e1fc077757e01c27ab1b634f09c007957ca6cf0a32d4b765e8ecc0adf2d29ce0
Artifact download completed successfully.
Total of 1 artifact(s) downloaded
Download artifact has finished successfully
##[group]Run echo "${COMMIT_MESSAGE}" > commit.txt
echo "${COMMIT_MESSAGE}" > commit.txt
cat cargo_update.log >> commit.txt

echo "${PR_MESSAGE}" > body.md
echo '```txt' >> body.md
cat cargo_update.log >> body.md
echo '```' >> body.md
shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
---
dep-bumps
following is the output from `cargo update`:
  COMMIT_MESSAGE: cargo update 
##[endgroup]
##[group]Run git config user.name github-actions
git config user.name github-actions
git config user.email github-actions@github.com
git switch --force-create cargo_update
git add ./Cargo.lock ./library/Cargo.lock ./src/tools/rustbook/Cargo.lock
git commit --no-verify --file=commit.txt
shell: /usr/bin/bash --noprofile --norc -e -o pipefail {0}
---
dep-bumps
following is the output from `cargo update`:
  COMMIT_MESSAGE: cargo update 
##[endgroup]
remote: error: GH013: Repository rule violations found for refs/heads/cargo_update.        
remote: Review all repository rules at https://github.com/rust-lang/rust/rules?ref=refs%2Fheads%2Fcargo_update        
remote: 
remote: - Cannot update this protected ref.        
remote: 
remote: - Changes must be made through a pull request.        
remote: 
remote: - Cannot force-push to this branch        
remote: 
To https://github.com/rust-lang/rust
 ! [remote rejected]   cargo_update -> cargo_update (push declined due to repository rule violations)
error: failed to push some refs to 'https://github.com/rust-lang/rust'
##[error]Process completed with exit code 1.
Post job cleanup.

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-run-make Area: port run-make Makefiles to rmake.rs A-rustc-dev-guide Area: rustc-dev-guide 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 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.

Projects

None yet

Development

Successfully merging this pull request may close these issues.