Skip to content

Rollup of 9 pull requests - #165793

Merged
rust-bors[bot] merged 24 commits into
rust-lang:mainfrom
Zalathar:rollup-pmoWXpK
Nov 11, 2026
Merged

rust-bors[bot] merged 24 commits into
rust-lang:mainfrom
Zalathar:rollup-pmoWXpK

Conversation

@Zalathar

Copy link
Copy Markdown
Member

Successful merges:

r? @ghost

Create a similar rollup

nnethercote and others added 24 commits November 10, 2026 14:19
Currently we build it even when the `NEEDS_CANONICAL` test fails.
It has a single call site. This will enable an optimization in the next
commit.
Do a `NEEDS_CANONICAL` check on the entire input. We already have such
checks on the relevant parts, but this lets us entirely avoid building a
`Canonicalizer` when the check fails.
It causes it to intern or not intern. Instead we can just let the
call site that passes in `true` do its own interning.
`decode_error_kind` for Hermit only knew 15 errno values and returned
`Uncategorized` for all others. For example, removing a non-empty
directory failed with `Uncategorized` instead of `DirectoryNotEmpty`.

Hermit uses the Linux errno numbering, so use the same mapping as on
Unix. `hermit-abi` defines no `ENOTSUP` and `EWOULDBLOCK` is an alias
of `EAGAIN`, so both need no separate arm.
…ts should be skipped in Miri due to missing shims
It is represented as an ADT, so needs custom logic to be accepted. The point of this type is that it's compatible with its C counterpart, so the lint definitely should accept it.
```
error[E0364]: `f` is private, and cannot be re-exported
  --> $DIR/privacy-early.rs:10:13
   |
LL |     pub macro m() {
LL |         use f as g;
   |             ^^^^^^
...
LL |     foo::m!();
   |     --------- in this macro invocation
   |
note: consider marking `f` as `pub` in the imported module
  --> $DIR/privacy-early.rs:6:5
   |
LL |     fn f() {}
   |     ^^^^^^^^^
```
where it was
```
error[E0364]: `f` is private, and cannot be re-exported
  --> $DIR/privacy-early.rs:10:13
   |
LL |     pub macro m() {
LL |         use f as g;
   |             ^^^^^^
...
LL |     foo::m!();
   |     --------- in this macro invocation
   |
note: consider marking `f` as `pub` in the imported module
  --> $DIR/privacy-early.rs:10:13
   |
LL |         use f as g;
   |             ^^^^^^
...
LL |     foo::m!();
   |     --------- in this macro invocation
```
Use span when suggesting making module public:

```
note: consider declaring module `foo` with `pub`
  --> $DIR/E0365.rs:1:1
   |
LL | / mod foo {
LL | |     pub const X: u32 = 1;
LL | | }
   | |_^
```

Show container when talking about enclosing module:

```
note: consider marking `f` as `pub` in the imported module
  --> $DIR/privacy-early.rs:6:5
   |
LL | mod foo {
LL |     fn f() {}
   |     ^^^^^^^^^
```

Use accurate descriptor for enclosing item:

```
note: consider declaring struct `S1` with `pub`
  --> $DIR/crate-private-reexport.rs:3:1
   |
LL | / struct S1 {
LL | |     #[rustfmt::skip]
LL | |     bar: i32,
LL | | }
   | |_^
```
```
note: consider marking `Full` as `pub` in the imported variant
  --> $DIR/issue-46209-private-enum-variant-reexport.rs:26:9
   |
LL |     enum Lieutenant {
LL |         JuniorGrade,
LL |         Full,
   |         ^^^^
```
…e: field is not printed

* In irrefutable patterns, the FieldPat is skipped, which means the name: field is not printed;
since FieldPat can be listed out of order and the list can be incomplete, it is not generally
possible to associate a given pattern within a Leaf or Variant with the actual field.

the slightly janky indentation is consistent with the way the other PatKinds do it
(with no comma)
* avoid referring to std in THIR tests
* review feedback (test too long)
* review feedback (naming, explanation, test too long)
* additional review feedback (test still too long)
…r=maxdexh

std: use skip_unsupported_miri_tests to control when tests should be skipped in Miri due to missing shims

We currently run some subset of std tests in Miri, skipping some because Miri doesn't support the operations they need. That is based on filters in the makefile. People don't know what is actually being tested and add random `cfg(miri)` in places to disable tests that were never run. This makes it quite hard to track which tests are being skipped and which operations we should add in Miri to get 100% std coverage. So let's replace that string-based filter with a cfg flag, `skip_unsupported_miri_tests`, that can be annotated at the tests.

Unfortunately I can't figure out how to disable all doctests in a module based on a cfg flag, so this entirely disables std doctests being run in Miri in our CI. (We still run them in https://github.com/rust-lang/miri-test-libstd.)

See prior discussion [on Zulip](https://rust-lang.zulipchat.com/#narrow/channel/219381-t-libs/topic/Miri.20vs.20tests.20in.20std/with/635913743).
Docs PR: rust-lang/std-dev-guide#86

r? @tgross35
try-job: test-x86_64-gnu-aux
…beta, r=Kobzol

Normalize "beta release channel" in `const-supertrait-unstable` test

like commit cbdd3f3 did for stable.

It failed on beta in <rust-lang#165713 (comment)>.

r? @Kobzol
…, r=programmerjake

Wrap proc-macro `EscapeError` enum into a struct

As discussed in rust-lang#151973.

Part of rust-lang#165750.

r? @programmerjake
Tweak private re-export errors to point at correct span and have more context

Use the correct span when talking about imported module that should be marked as public:
```
error[E0364]: `f` is private, and cannot be re-exported
  --> $DIR/privacy-early.rs:10:13
   |
LL |     pub macro m() {
LL |         use f as g;
   |             ^^^^^^
...
LL |     foo::m!();
   |     --------- in this macro invocation
   |
note: consider marking `f` as `pub` in the imported module
  --> $DIR/privacy-early.rs:6:5
   |
LL |     fn f() {}
   |     ^^^^^^^^^
```
where it was:
```
error[E0364]: `f` is private, and cannot be re-exported
  --> $DIR/privacy-early.rs:10:13
   |
LL |     pub macro m() {
LL |         use f as g;
   |             ^^^^^^
...
LL |     foo::m!();
   |     --------- in this macro invocation
   |
note: consider marking `f` as `pub` in the imported module
  --> $DIR/privacy-early.rs:10:13
   |
LL |         use f as g;
   |             ^^^^^^
...
LL |     foo::m!();
   |     --------- in this macro invocation
```

Use span when suggesting making module public:

```
note: consider declaring module `foo` with `pub`
  --> $DIR/E0365.rs:1:1
   |
LL | / mod foo {
LL | |     pub const X: u32 = 1;
LL | | }
   | |_^
```

Show container when talking about enclosing module:

```
note: consider marking `f` as `pub` in the imported module
  --> $DIR/privacy-early.rs:6:5
   |
LL | mod foo {
LL |     fn f() {}
   |     ^^^^^^^^^
```

Use accurate descriptor for enclosing item:

```
note: consider declaring struct `S1` with `pub`
  --> $DIR/crate-private-reexport.rs:3:1
   |
LL | / struct S1 {
LL | |     #[rustfmt::skip]
LL | |     bar: i32,
LL | | }
   | |_^
```
```
note: consider marking `Full` as `pub` in the imported variant
  --> $DIR/issue-46209-private-enum-variant-reexport.rs:26:9
   |
LL |     enum Lieutenant {
LL |         JuniorGrade,
LL |         Full,
   |         ^^^^
```
…names, r=adwinwhite

In irrefutable patterns, the FieldPat is skipped, which means the name: field is not printed

since FieldPat can be listed out of order and the list can be incomplete, it is not generally possible to associate a given pattern within a Leaf or Variant with the actual field.

the slightly janky indentation is consistent with the way the other PatKinds do it
…-opts, r=ShoyuVanilla

Canonicalization cleanups

I saw some moderate perf improvements locally with these changes but on CI they had no effect. Maybe due to PGO? Most of the changes are actually refactorings which I think are still worth merging.

r? @ShoyuVanilla
…, r=JonathanBrouwer

Remove unnecessary mut from HirIdValidator::check_nested_id

Remove unnecessary `mut` from `HirIdValidator::check_nested_id`, as this method doesn't need a mutated self. See [#t-compiler/help > The check_nested_id in HirIdValidator  doesn't need mut](https://rust-lang.zulipchat.com/#narrow/channel/182449-t-compiler.2Fhelp/topic/The.20check_nested_id.20in.20HirIdValidator.20.20doesn.27t.20need.20mut/with/639210467)

The changes compile successfully and pass the `./x check compiler/rustc_passes` check.
…, r=beetrees

make improper_ctypes accept `x87_f80`

tracking issue: rust-lang#163982

Like rust-lang#165274, but for `x87_f80`.

It is represented as an ADT, so needs custom logic to be accepted. The point of this type is that it's compatible with its C counterpart, so the lint definitely should accept it.

r? beetrees
std: map more errno values to ErrorKind on Hermit

`decode_error_kind` for Hermit only knew 15 errno values and returned `Uncategorized` for all others. For example, removing a non-empty directory failed with `Uncategorized` instead of `DirectoryNotEmpty`.

Hermit uses (more or less) the Linux errno numbering, so use the same mapping as on Unix. `hermit-abi` defines no `ENOTSUP` and `EWOULDBLOCK` is an alias of `EAGAIN`, so both need no separate arm.
@rust-bors rust-bors Bot added the rollup A PR which is a rollup label Nov 11, 2026
@rustbot rustbot added A-filesystem Area: `std::fs` A-io Area: `std::io` (note: `std::fs`, `std::net`, `std::path` are A-filesystem, A-net, A-path) A-networking Area: `std::net` A-process Area: `std::process` (note: `std::env` is A-env) O-apple Operating system: Apple / Darwin (macOS, iOS, tvOS, visionOS, watchOS) labels Nov 11, 2026
@rustbot rustbot added O-unix Operating system: Unix-like O-windows Operating system: Windows 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. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver) labels Nov 11, 2026
@Zalathar

Copy link
Copy Markdown
Member Author

Rollup of everything.

@bors r+ rollup=never p=5 force

@rust-bors

rust-bors Bot commented Nov 11, 2026

Copy link
Copy Markdown
Contributor

📌 Commit 979a911 has been approved by Zalathar

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

rust-bors Bot commented Nov 11, 2026

Copy link
Copy Markdown
Contributor

☀️ Test successful - CI
Approved by: Zalathar
Duration: 3h 11m 38s
Pushing 9de7469 to main...

@rust-bors
rust-bors Bot merged commit 9de7469 into rust-lang:main Nov 11, 2026
15 checks passed
@rustbot rustbot added this to the 1.102.0 milestone Nov 11, 2026
@Zalathar
Zalathar deleted the rollup-pmoWXpK branch November 11, 2026 07:16
@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 9c56488 (parent) -> 9de7469 (this PR)

Test differences

Show 1197 test diffs

Stage 1

  • [ui] tests/ui/lint/improper-ctypes/x87_f80.rs#linux32: [missing] -> pass (J2)
  • [ui] tests/ui/lint/improper-ctypes/x87_f80.rs#win64: [missing] -> pass (J2)
  • [ui] tests/ui/thir-print/thir-tree-field-pat-names.rs: [missing] -> pass (J2)
  • [ui (polonius)] tests/ui/lint/improper-ctypes/x87_f80.rs#linux32: [missing] -> pass (J4)
  • [ui (polonius)] tests/ui/lint/improper-ctypes/x87_f80.rs#linux64: [missing] -> pass (J4)
  • [ui (polonius)] tests/ui/lint/improper-ctypes/x87_f80.rs#win64: [missing] -> pass (J4)
  • test_env_get_set_multithreaded: ignore -> pass (J6)

Stage 2

  • create_dir_all_bare: pass -> ignore (J0)
  • ffi::os_str::tests::os_str_slice_at_windows: [missing] -> pass (J0)
  • ffi::os_str::tests::slice_between_surrogates: [missing] -> pass (J0)
  • ffi::os_str::tests::slice_surrogate_edge: [missing] -> pass (J0)
  • join_paths_windows: [missing] -> pass (J0)
  • net::ip_addr::tests::to_socket_addr_socketaddr: [missing] -> pass (J0)
  • net::socket_addr::tests::bind_udp_socket_bad: [missing] -> pass (J0)
  • net::socket_addr::tests::compare: [missing] -> pass (J0)
  • net::socket_addr::tests::ipv4_socket_addr_to_string: [missing] -> pass (J0)
  • net::socket_addr::tests::is_v4: [missing] -> pass (J0)
  • net::socket_addr::tests::is_v6: [missing] -> pass (J0)
  • net::socket_addr::tests::set_ip: [missing] -> pass (J0)
  • net::socket_addr::tests::set_scope_id: [missing] -> pass (J0)
  • net::socket_addr::tests::socket_v4_to_str: [missing] -> pass (J0)
  • net::socket_addr::tests::to_socket_addr_ipaddr_u16: [missing] -> pass (J0)
  • net::socket_addr::tests::to_socket_addr_str_u16: [missing] -> pass (J0)
  • net::socket_addr::tests::to_socket_addr_string: [missing] -> pass (J0)
  • net::tcp::tests::clone_accept_concurrent: [missing] -> pass (J0)
  • net::tcp::tests::close_read_wakes_up: [missing] -> pass (J0)
  • net::tcp::tests::connect_error: [missing] -> pass (J0)
  • net::tcp::tests::connect_loopback: [missing] -> pass (J0)
  • net::tcp::tests::connect_timeout_error: [missing] -> pass (J0)
  • net::tcp::tests::connect_timeout_valid: [missing] -> pass (J0)
  • net::tcp::tests::debug: [missing] -> pass (J0)
  • net::tcp::tests::double_bind: [missing] -> pass (J0)
  • net::tcp::tests::keepalive: [missing] -> pass (J0)
  • net::tcp::tests::linger: [missing] -> pass (J0)
  • net::tcp::tests::multiple_connect_interleaved_greedy_schedule: [missing] -> pass (J0)
  • net::tcp::tests::multiple_connect_interleaved_lazy_schedule: [missing] -> pass (J0)
  • net::tcp::tests::multiple_connect_serial: [missing] -> pass (J0)
  • net::tcp::tests::partial_read: [missing] -> pass (J0)
  • net::tcp::tests::peek: [missing] -> pass (J0)
  • net::tcp::tests::read_buf: [missing] -> pass (J0)
  • net::tcp::tests::set_nonblocking: [missing] -> pass (J0)
  • net::tcp::tests::smoke_test: [missing] -> pass (J0)
  • net::tcp::tests::socket_and_peer_name: [missing] -> pass (J0)
  • net::tcp::tests::tcp_clone_smoke: [missing] -> pass (J0)
  • net::tcp::tests::tcp_clone_two_write: [missing] -> pass (J0)
  • net::tcp::tests::test_read_timeout: [missing] -> pass (J0)
  • net::tcp::tests::test_read_with_timeout: [missing] -> pass (J0)
  • net::tcp::tests::test_timeout_zero_duration: [missing] -> pass (J0)
  • net::tcp::tests::ttl: [missing] -> pass (J0)
  • net::tcp::tests::write_close: [missing] -> pass (J0)
  • net::tcp::tests::write_vectored: [missing] -> pass (J0)
  • net::tests::hostname_smoketest: [missing] -> pass (J0)
  • os::unix::fs::dirs::tests::can_fetch_xdg_base_dirs: [missing] -> pass (J0)
  • os::unix::fs::dirs::tests::can_fetch_xdg_media_dirs: [missing] -> pass (J0)
  • os::unix::fs::dirs::tests::test_well_user_dirs_parsing: [missing] -> pass (J0)
  • os_string_must_know_it_isnt_utf8_issue_126291: [missing] -> pass (J0)
  • split_paths_windows: [missing] -> pass (J0)
  • sys::alloc::windows::tests::alloc_header: [missing] -> pass (J0)
  • sys::args::windows::tests::empty: [missing] -> pass (J0)
  • sys::args::windows::tests::genius_quotes: [missing] -> pass (J0)
  • sys::args::windows::tests::post_2008: [missing] -> pass (J0)
  • sys::helpers::tests::bench_heap_path_alloc: [missing] -> pass (J0)
  • sys::helpers::tests::heap_allocation_fails: [missing] -> pass (J0)
  • sys::helpers::tests::heap_allocation_works: [missing] -> pass (J0)
  • sys::helpers::tests::stack_allocation_fails: [missing] -> pass (J0)
  • sys::helpers::tests::stack_allocation_works: [missing] -> pass (J0)
  • sys::helpers::tests::test_muldiv: [missing] -> pass (J0)
  • sys::io::error::windows::tests::ntstatus_error: [missing] -> pass (J0)
  • sys::io::kernel_copy::linux::tests::bench_file_to_file_copy: [missing] -> pass (J0)
  • sys::io::kernel_copy::linux::tests::bench_file_to_socket_copy: [missing] -> pass (J0)
  • sys::io::kernel_copy::linux::tests::bench_socket_pipe_socket_copy: [missing] -> pass (J0)
  • sys::io::kernel_copy::linux::tests::copies_append_mode_sink: [missing] -> pass (J0)
  • sys::io::kernel_copy::linux::tests::dont_splice_pipes_from_files: [missing] -> pass (J0)
  • sys::os_str::bytes::tests::slice_debug_output: [missing] -> pass (J0)
  • sys::pal::unix::conf::tests::test_parse_glibc_version: [missing] -> pass (J0)
  • sys::pal::unix::weak::dlsym::tests::weak_existing: [missing] -> pass (J0)
  • sys::pal::unix::weak::dlsym::tests::weak_missing: [missing] -> pass (J0)
  • sys::pal::unix::weak::weak_linkage::tests::weak_existing: [missing] -> pass (J0)
  • sys::pal::unix::weak::weak_linkage::tests::weak_missing: [missing] -> pass (J0)
  • sys::pal::windows::api::tests::test_utf16_macros: [missing] -> pass (J0)
  • sys::path::windows::tests::broken_unc_path: [missing] -> pass (J0)
  • sys::path::windows::tests::test_is_absolute_exact: [missing] -> pass (J0)
  • sys::path::windows::tests::test_parse_next_component: [missing] -> pass (J0)
  • sys::path::windows::tests::test_parse_prefix_verbatim: [missing] -> pass (J0)
  • sys::path::windows::tests::test_parse_prefix_verbatim_device: [missing] -> pass (J0)
  • sys::path::windows::tests::test_verbatim_disk_issue_161651: [missing] -> pass (J0)
  • sys::path::windows::tests::verbatim: [missing] -> pass (J0)
  • sys::personality::dwarf::tests::dwarf_reader: [missing] -> pass (J0)
  • sys::stdio::windows::tests::zero_size_read: [missing] -> pass (J0)
  • sys::thread_local::key::tests::destructors: [missing] -> pass (J0)
  • sys::thread_local::key::tests::smoke: [missing] -> pass (J0)
  • test_decompositions_windows: [missing] -> pass (J0)
  • test_windows_absolute: [missing] -> pass (J0)
  • tests::fiber_does_not_trigger_dtor: [missing] -> ignore (J0)
  • trailing_sep_verbatim: [missing] -> pass (J0)
  • win_delete_self: [missing] -> ignore (J0)
  • [ui] tests/ui/thir-print/thir-tree-field-pat-names.rs: [missing] -> pass (J1)
  • test_env_get_set_multithreaded: ignore -> pass (J3)
  • [ui] tests/ui/lint/improper-ctypes/x87_f80.rs#win32: [missing] -> ignore (backend gcc cannot build for target i686-pc-windows-gnu) (J5)
  • [ui] tests/ui/lint/improper-ctypes/x87_f80.rs#win64: [missing] -> ignore (backend gcc cannot build for target x86_64-pc-windows-gnu) (J5)

(and 41 additional test diffs)

Additionally, 1056 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 9de746938314271db6dbb62dc3b4f07288d07d54 --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-gcc: 54m 56s -> 1h 25m (+55.9%)
  2. test-x86_64-msvc-ext2: 1h 39m -> 57m 9s (-42.3%)
  3. dist-i586-gnu-i586-i686-musl: 21m 12s -> 29m 29s (+39.1%)
  4. test-x86_64-msvc-ext3: 1h 54m -> 1h 11m (-37.2%)
  5. dist-s390x-linux: 1h 6m -> 1h 31m (+36.7%)
  6. test-x86_64-msvc-1: 2h 7m -> 2h 52m (+35.0%)
  7. test-x86_64-gnu-nopt: 1h 56m -> 2h 36m (+33.9%)
  8. dist-loongarch64-linux: 1h 40m -> 2h 14m (+33.0%)
  9. dist-arm-linux-musl: 1h 50m -> 1h 14m (-32.6%)
  10. dist-powerpc-linux: 1h 37m -> 1h 5m (-32.4%)
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.

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

Labels

A-filesystem Area: `std::fs` A-io Area: `std::io` (note: `std::fs`, `std::net`, `std::path` are A-filesystem, A-net, A-path) A-networking Area: `std::net` A-process Area: `std::process` (note: `std::env` is A-env) merged-by-bors This PR was explicitly merged by bors. O-apple Operating system: Apple / Darwin (macOS, iOS, tvOS, visionOS, watchOS) O-unix Operating system: Unix-like O-windows Operating system: Windows 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. WG-trait-system-refactor The Rustc Trait System Refactor Initiative (-Znext-solver)

Projects

None yet

Development

Successfully merging this pull request may close these issues.