Skip to content

Rollup of 12 pull requests - #160388

Merged
rust-bors[bot] merged 79 commits into
rust-lang:mainfrom
JonathanBrouwer:rollup-SYNLyMf
Aug 2, 2026
Merged

Rollup of 12 pull requests#160388
rust-bors[bot] merged 79 commits into
rust-lang:mainfrom
JonathanBrouwer:rollup-SYNLyMf

Conversation

@JonathanBrouwer

Copy link
Copy Markdown
Contributor

Successful merges:

r? @ghost

Create a similar rollup

folkertdev and others added 30 commits July 18, 2026 16:50
Add UI coverage for source-shaped local values before changing the renderer.

The new cases exercise structs, enum variants, tuples, arrays, slices, and
fallback leaf values so later commits can bless one behavior change at a time.
This updates the rust-version file to dfbea5b.
…e-buffer

skip weak memory buffer handling when there is only one thread
Route local value rendering through a source-shaped renderer helper.

At this step the helper still delegates leaves and unsupported shapes back to
the existing raw byte renderer, so the behavioral changes can land in focused
follow-up commits.
Render struct and struct-like ADT operands using their source field names.

Fields are projected from the operand and each leaf still uses the existing raw
renderer, producing output such as `Point { x: [..], y: [..] }` without relying
on user Debug or Display implementations.
Extend source-shaped ADT rendering to enum operands.

The renderer reads the runtime discriminant, downcasts to the active variant,
and then renders the payload fields with the same raw-leaf fallback used for
struct fields. Unit, tuple, and struct variants keep their Rust-like spelling.
Render tuple operands as positional source-shaped values.

Tuple elements are projected in source order and rendered through the existing
leaf renderer, including the trailing comma for one-element tuples.
Render array and slice operands as ordered source-shaped elements.

Fixed arrays use their layout count while slices use the runtime metadata length,
then `project_array_fields` supplies the element operands for raw-leaf rendering.
This updates the rust-version file to d3ea035.
…t-comment

fix `ptr_from_addr_cast` comment
…s-and-types-handling

[Priroda] Render projected locals with source-shaped values
Implement shims for vsha256hq_u32, vsha256h2q_u32, vsha256su0q_u32 and vsha256su1q_u32
Matches the naming already used in
the aarch64 SHA256 shims.
…ntrinsics

aarch64: implement SHA256 intrinsic shims
…htriplett

Allow only implementing `Read::read_buf`

This PR allows users to only implement `Read::read_buf`, without the need for implementing `Read::read`. `rustc_must_implement_one_of` annotation ensures that **at least** one of the methods is implemented, so that the default impls don't create infinite recursion.

Note that `Read::read_buf` is unstable, so this doesn't change anything on stable, there you still need to implement `Read::read`, since you can't implement `Read::read_buf`. Thus, we don't expose `rustc_must_implement_one_of` to stable.

r? @thomcc
tests: prefer max-llvm-major-version over open LLVM ranges

Per review, take option 3: replace open `ignore-llvm-version` ranges with `max-llvm-major-version`. Left gdb `X - 99.0` ranges alone so CI's older gdb still runs those tests.

Fixes rust-lang#159338.
allocations are allowed to grow (but not shrink)

This got permitted on the LLVM side about a year ago (llvm/llvm-project#141338), but didn't require any code changes since LLVM's optimizations were already compatible with growing allocations. That said, LLVM assumes that allocations created via operations it recognizes (e.g. `malloc`, `alloca`, or the Rust global allocator operations) never change their size, so we have to exclude that case.

This resolves a part of rust-lang/unsafe-code-guidelines#430.

It may seem strange that allocations can grow but not shrink, but we did have multiple users show up in #t-opsem with exactly that request. Cc @nhusung @foonathan; see [here](https://rust-lang.zulipchat.com/#narrow/channel/136281-t-opsem/topic/Shrinking.20allocations.20in-place/near/612181257) and [here](https://rust-lang.zulipchat.com/#narrow/channel/136281-t-opsem/topic/Shrinking.20allocations.20in-place/near/612191402) for some details about their use-cases.

Cc @rust-lang/opsem @rust-lang/lang
…parent-map, r=fee1-dead

fix: Do not stop `visible_parent_map` breadth-first search reaching children of `#[doc(hidden)]` modules

The `visible_parent_map` query misses putting the child items of `#[doc(hidden)]` modules into the queue, resulting in the breadth-first search missing them entirely. This results in inconsistent path printing behavior affecting diagnostics: namely that re-exports nested deeply within `#[doc(hidden)]` modules are not considered as a possible fallback path. See the linked issue (rust-lang#159880) for more details and an example of how this manifests in diagnostics.

This PR makes sure that `#[doc(hidden)]` parents in the fallback map are still searched as part of the breadth-first search.

Fixes rust-lang#159880.

The two tests for this change are based on the inconsistent diagnostics shown in the issue:
* `tests/ui/suggestions/suggest-path-through-direct-dep-crate/hidden-reexport-of-transitive-dep-item.rs` captures the current, expected behavior in the already working base case where the hidden module is still recorded in the fallback map;
* `tests/ui/suggestions/suggest-path-through-direct-dep-crate/hidden-reexport-of-nested-transitive-dep-item.rs` is a regression test for the breadth-first search covering nested children of `#[doc(hidden)]` modules to populate the fallback map by testing whether the diagnostic prefers the hidden but accessible path through the direct dependency crate.

Related PRs/issues:
* rust-lang#87349
* rust-lang#153477
…=TaKO8Ki

Move codegen_stmt_debuginfo to debuginfo.rs

This is the more consistent file to put it, and allows to reduce some visibilities.
…-more-tests, r=TaKO8Ki

Add more tests for `must_implement_one_of`

Test some additional malformed cases, and test cases where one method
has a default implementation but the others don't.
@rust-bors rust-bors Bot added the rollup A PR which is a rollup label Aug 2, 2026
@rustbot rustbot added F-explicit_tail_calls `#![feature(explicit_tail_calls)]` S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. 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 Aug 2, 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 Aug 2, 2026

Copy link
Copy Markdown
Contributor

📌 Commit 7dbc70f 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 Aug 2, 2026
@rust-bors

This comment has been minimized.

rust-bors Bot pushed a commit that referenced this pull request Aug 2, 2026
Rollup of 12 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 Aug 2, 2026

Copy link
Copy Markdown
Contributor

☀️ Try build successful (CI)
Build commit: 758e962 (758e962fad8e23dcd0520932c9640cce372ad433)
Base parent: 8c3a200 (8c3a200b704adb5f110249b68daa4ff386b36e29)

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

rust-bors Bot commented Aug 2, 2026

Copy link
Copy Markdown
Contributor

☀️ Test successful - CI
Approved by: JonathanBrouwer
Duration: 3h 15m 14s
Pushing 28c66af to main...

@rust-bors
rust-bors Bot merged commit 28c66af into rust-lang:main Aug 2, 2026
15 checks passed
@rustbot rustbot added this to the 1.99.0 milestone Aug 2, 2026
@github-actions

github-actions Bot commented Aug 2, 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 b04d3c8 (parent) -> 28c66af (this PR)

Test differences

Show 859 test diffs

Stage 1

  • io::buffered::tests::bench_buffered_reader_small_reads: pass -> [missing] (J0)
  • io::buffered::tests::line_full_buffer_flushed: pass -> [missing] (J0)
  • io::buffered::tests::line_vectored_partial_and_errors: pass -> [missing] (J0)
  • io::buffered::tests::line_write_all_error: pass -> [missing] (J0)
  • io::buffered::tests::test_buffered_reader_stream_position_panic: pass -> [missing] (J0)
  • io::buffered::tests::test_buffered_writer_seek: pass -> [missing] (J0)
  • io::copy::tests::copy_specializes_bufwriter: pass -> [missing] (J0)
  • io::copy::tests::copy_specializes_to_vec: pass -> [missing] (J0)
  • io::copy::tests::io_benches::bench_copy_buf_reader: pass -> [missing] (J0)
  • io::cursor::tests::test_mem_mut_writer: pass -> [missing] (J0)
  • io::cursor::tests::test_mem_writer: pass -> [missing] (J0)
  • io::tests::read_exact_slice: pass -> [missing] (J0)
  • io::tests::skip_until: pass -> [missing] (J0)
  • io::tests::take_seek_big_offsets: pass -> [missing] (J0)
  • io::tests::take_seek_error: pass -> [missing] (J0)
  • io::util::tests::empty_reads: pass -> [missing] (J0)
  • io::util::tests::take_some_bytes: pass -> [missing] (J0)
  • io::bench_read_to_end: [missing] -> pass (J2)
  • io::borrowed_cursor_advance_overflow: [missing] -> pass (J2)
  • io::buffered::line_vectored_long_input_past_scan_cap: [missing] -> pass (J2)
  • io::buffered::test_buffered_reader_stream_position_panic: [missing] -> pass (J2)
  • io::buffered::test_line_buffer: [missing] -> pass (J2)
  • io::chain_empty_size_hint: [missing] -> pass (J2)
  • io::cursor::read_to_end: [missing] -> pass (J2)
  • io::cursor::test_array_writer: [missing] -> pass (J2)
  • io::cursor::test_boxed_slice_reader: [missing] -> pass (J2)
  • io::cursor::test_buf_writer_seek: [missing] -> pass (J2)
  • io::cursor::test_buf_writer_vectored: [missing] -> pass (J2)
  • io::cursor::test_mem_reader: [missing] -> pass (J2)
  • io::cursor::test_mem_writer: [missing] -> pass (J2)
  • io::read_buf_exact: [missing] -> pass (J2)
  • io::read_to_end_error: [missing] -> pass (J2)
  • io::test_write_all_vectored: [missing] -> pass (J2)
  • io::try_oom_error: [missing] -> pass (J2)
  • [ui] tests/ui/explicit-tail-calls/support/bystack.rs#loongarch32: ignore (ignored when the LLVM version is between 22.0.0 and 23.0.0) -> ignore (ignored when the LLVM version (22.1.2) is newer than majorversion 21) (J4)
  • [ui] tests/ui/explicit-tail-calls/support/byval.rs#loongarch32: ignore (ignored when the LLVM version is between 22.0.0 and 23.0.0) -> ignore (ignored when the LLVM version (22.1.2) is newer than majorversion 21) (J4)
  • io::cursor::tests::vec_seek_and_write_past_usize_max: pass -> [missing] (J8)
  • [ui] tests/ui/suggestions/suggest-path-through-direct-dep-crate/hidden-reexport-of-nested-transitive-dep-item.rs: [missing] -> pass (J9)
  • [ui (polonius)] tests/ui/mut-restriction/mut-restriction-check-asm.rs: [missing] -> pass (J10)

Stage 2

  • io::tests::bench_read_to_end: ignore -> [missing] (J1)
  • io::bench_take_read: [missing] -> pass (J3)
  • io::borrowed_cursor_advance_overflow: [missing] -> pass (J3)
  • io::buffered::line_buffer_write0_error: [missing] -> pass (J3)
  • io::buffered::line_buffer_write0_normal: [missing] -> pass (J3)
  • io::buffered::test_buffered_reader_seek: [missing] -> pass (J3)
  • io::buffered::test_read_until: [missing] -> pass (J3)
  • io::buffered::tests::bench_buffered_reader: pass -> [missing] (J3)
  • io::buffered::tests::bench_buffered_writer: pass -> [missing] (J3)
  • io::buffered::tests::line_buffer_write0_error: pass -> [missing] (J3)
  • io::buffered::tests::line_full_buffer_flushed: pass -> [missing] (J3)
  • io::buffered::tests::line_vectored: pass -> [missing] (J3)
  • io::buffered::tests::panic_in_write_doesnt_flush_in_drop: pass -> [missing] (J3)
  • io::buffered::tests::partial_write_buffers_line: pass -> [missing] (J3)
  • io::buffered::tests::test_buffered_reader_stream_position: pass -> [missing] (J3)
  • io::buffered::tests::test_buffered_reader_stream_position_panic: pass -> [missing] (J3)
  • io::buffered::tests::test_buffered_writer_inner_flushes: pass -> [missing] (J3)
  • io::buffered::tests::test_line_buffer: pass -> [missing] (J3)
  • io::buffered::tests::test_lines: pass -> [missing] (J3)
  • io::buffered::tests::test_read_line: pass -> [missing] (J3)
  • io::buffered::tests::test_read_until: pass -> [missing] (J3)
  • io::chain_splitted_char: [missing] -> pass (J3)
  • io::chain_zero_length_read_is_not_eof: [missing] -> pass (J3)
  • io::copy::copy_copies: [missing] -> pass (J3)
  • io::copy::copy_specializes_from_slice: [missing] -> pass (J3)
  • io::copy::copy_specializes_from_vecdeque: [missing] -> pass (J3)
  • io::copy::tests::copy_specializes_bufwriter: pass -> [missing] (J3)
  • io::cursor::bench_write_vec: [missing] -> pass (J3)
  • io::cursor::read_to_end: [missing] -> pass (J3)
  • io::cursor::test_box_slice_writer: [missing] -> pass (J3)
  • io::cursor::test_buf_writer: [missing] -> pass (J3)
  • io::cursor::test_buf_writer_seek: [missing] -> pass (J3)
  • io::cursor::test_mem_reader: [missing] -> pass (J3)
  • io::cursor::test_partial_eq: [missing] -> pass (J3)
  • io::cursor::test_vec_writer: [missing] -> pass (J3)
  • io::cursor::tests::test_array_writer: pass -> [missing] (J3)
  • io::cursor::tests::test_box_slice_writer_vectored: pass -> [missing] (J3)
  • io::cursor::tests::test_boxed_slice_reader: pass -> [missing] (J3)
  • io::cursor::tests::test_eq: pass -> [missing] (J3)
  • io::cursor::tests::test_seekable_mem_writer: pass -> [missing] (J3)
  • io::cursor::tests::vec_seek_before_0: pass -> [missing] (J3)
  • io::impls::tests::bench_write_vec: pass -> [missing] (J3)
  • io::lines: [missing] -> pass (J3)
  • io::read_buf_broken_read: [missing] -> pass (J3)
  • io::read_buf_data_and_error_take: [missing] -> pass (J3)
  • io::read_exact: [missing] -> pass (J3)
  • io::split: [missing] -> pass (J3)
  • io::test_writer_read_from_one_buf: [missing] -> pass (J3)
  • io::tests::borrowed_cursor_advance_overflow: pass -> [missing] (J3)
  • io::tests::buf_read_has_data_left: pass -> [missing] (J3)
  • io::tests::lines: pass -> [missing] (J3)
  • io::tests::read_to_string: pass -> [missing] (J3)
  • io::tests::take_eof: pass -> [missing] (J3)
  • io::tests::take_seek_big_offsets: pass -> [missing] (J3)
  • io::util::repeat_repeats: [missing] -> pass (J3)
  • io::util::tests::empty_seeks: pass -> [missing] (J3)
  • io::util::tests::take_some_bytes: pass -> [missing] (J3)
  • io::bench_read_slice: [missing] -> pass (J5)
  • io::tests::bench_read_to_end: pass -> [missing] (J5)
  • io::copy::tests::io_benches::bench_copy_buf_reader: pass -> [missing] (J6)
  • [ui] tests/ui/mut-restriction/mut-restriction-check-asm.rs: [missing] -> pass (J7)

(and 489 additional test diffs)

Additionally, 270 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 28c66af27578a28bc8cad1c5957be4b1e2e7fb8b --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-gcc-core-tests: 8m 32s -> 14m 10s (+65.9%)
  2. optional-x86_64-gnu-autodiff: 35m 45s -> 52m 17s (+46.3%)
  3. x86_64-gnu-llvm-22-1: 50m 15s -> 1h 11m (+43.0%)
  4. i686-msvc-1: 2h 14m -> 3h 5m (+38.0%)
  5. dist-powerpc64-linux-musl: 1h 14m -> 1h 40m (+34.7%)
  6. pr-check-2: 28m 55s -> 38m 42s (+33.8%)
  7. x86_64-msvc-2: 1h 57m -> 2h 32m (+29.5%)
  8. dist-aarch64-apple: 1h 59m -> 1h 27m (-26.7%)
  9. x86_64-gnu-nopt: 2h 24m -> 1h 47m (-25.1%)
  10. pr-check-1: 28m 14s -> 34m 15s (+21.3%)
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

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#159906 Semantic check of mut restrictions 06f63a4ddc5f2934e9f7ce4b1066310f56e84eb8 (link)
#156527 Move std::io tests to alloctests & add prelude a58321701dc429165048bacfe10987acf1d6f613 (link)
#159525 Stabilize passing 128-bit integers via vector registers wit… e09b6e551c3dd3c8c37fc3f971076d089b44d438 (link)
#160342 Specialize advance_by method of Fuse 70bd36e5423f7e67df81ab964bb87800c40fb72a (link)
#160358 borrowck: Simplify deps to build compiler 30s faster 1b64e0870f2ce8996cc95dc52e2d74a14b6d6e50 (link)
#160375 miri subtree update 8876a780650e584d13aa06cf7912e33e5f2d0475 (link)
#106643 Allow only implementing Read::read_buf 232541626d7a9fe2a0b3e3206b4403d53582581e (link)
#159499 tests: prefer max-llvm-major-version over open LLVM ranges 11b99936c98c3e36d9175f2d9f2bb2df20451cbe (link)
#159729 allocations are allowed to grow (but not shrink) eb7bb82c13bbcbd48a3fd35114d9649fdc08d35b (link)
#159881 fix: Do not stop visible_parent_map breadth-first search … 45d8249b3e92705de1456a7d101bdb5a4d4450a1 (link)
#160189 Move codegen_stmt_debuginfo to debuginfo.rs 2c66e481ac8164279931976ff2e91cb961c7a677 (link)
#160356 Add more tests for must_implement_one_of 069b17b2865503f00af4bba31eba1f805c286602 (link)

previous master: b04d3c8c22

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

F-explicit_tail_calls `#![feature(explicit_tail_calls)]` merged-by-bors This PR was explicitly merged by bors. rollup A PR which is a rollup 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.