Skip to content

Rollup of 11 pull requests - #165844

Merged
rust-bors[bot] merged 35 commits into
rust-lang:mainfrom
Zalathar:rollup-BB6Dp3b
Nov 12, 2026
Merged

rust-bors[bot] merged 35 commits into
rust-lang:mainfrom
Zalathar:rollup-BB6Dp3b

Conversation

@Zalathar

Copy link
Copy Markdown
Member

Successful merges:

r? @ghost

Create a similar rollup

fmease and others added 30 commits October 30, 2026 11:27
(cherry picked from commit b791169)
LangItem might eventually be the type that forces us to support
`#[derive(StableHash)]` for enums with more than 256 variants.
This commit also removes `#[derive(Hash)]` from the affected types, since it is
no longer used.

If these types need a plain Hash impl is needed in the future, it could
potentially share the `stable_hash_inner` implementation.
By moving away from the old `impl_stable_traits_for_trivial_type!` macro, this
commit has the side-effect of removing unused StableOrd impls for some types.
Those impls could potentially be re-added if they are ever needed.
Add a test for a case that results in a recursive loop that runs until
it runs out of memory or gets killed. This used to take a long time to
compile because of nested recursion caused by dereferencing the type of
the struct.

Signed-off-by: Hardik Kumar <hardikxk@gmail.com>
This pulls some less-trivial changes out of the main migration to `Value<'ll>`.
derived impls kept the lifetime spans of the derive input so the external macro check missed them and `#[expect(redundant_lifetimes)]` on a derived struct went unfulfilled. the lint now skips items whose own span is in an external macro.
Just because the parser of a specific syntax fragment kind returns an
`Err(_)` doesn't automatically mean that the problematic token sequence
isn't "of" that fragment's kind. The token sequence might "almost" be of
that kind (i.e., share a non-empty prefix) but simply contain a syntax
error in it.

On a side note, it's rather odd that the now removed
`annotate_err_with_kind` only added the note "this macro call doesn't
expand to a $fragkind" if the target fragment kind was *type* or *pat*,
there are 20 kinds at the of writing.
…..)`

This also means that it's now available under `core::pat` instead of
`core` directly. This makes it consistent with the `std` re-export
which is only available under `std::pat` and not under `std` directly.

Moreover, drop library feature `pattern_type_macro` and demote language
feature `pattern_types` to a library feature. This is nice because it
means `std::pat::pattern_type` is no longer unnecessarily gated behind
two (!) feature gates.
This also means that it's now available under `core::view` instead of
`core` directly. This makes it consistent with the `std` re-export
which is only available under `std::view` and not under `std` directly.

Moreover, drop library feature `view_type_macro` and demote language
feature `view_types` to a library feature. This is nice because it
means `std::view::view_type` is no longer unnecessarily gated behind
two (!) feature gates.
Co-authored-by: xkevio <xkeviota@gmail.com>

style: use ecx stmt item method
cg_llvm: Use an invariant lifetime brand for LLVM values

This PR changes the type of LLVM value references from `&'ll Value` to `Value<'ll>` with an invariant lifetime brand, to help uphold soundness of the FFI bindings.

There should be no change to compiler output.

---

Value is one of the more widely-used types, much more so than Type, so unfortunately this step ends up needing to touch quite a lot of code. Thankfully almost all of the changes are trivial.
…rk-Simulacrum

Bump stage0 to 1.101.0-beta.1

https://forge.rust-lang.org/release/process.html#default-branch-bootstrap-update-and-crater-tuesday

- run replace-version-placeholder (cherry-picked from beta)
- bump stage0 to 1.101.0-beta.1
- update STAGE0_MISSING_TARGETS
- reformat with `cfg_select!` awareness
- update `cfg(bootstrap)`
Implement `core::ops::FnAddr`

This implements `FnAddr` as proposed in rust-lang/libs-team#837 (comment).

This is my first contribution to the rust compiler, so I'm not 100% familiar with the process.

All code was hand written by me.

cc rust-lang#148768
…syntax, r=mati865

Migrate built-in macros `pattern_type` & `view_type` to macros 2.0 that expand to internal syntax

Part of MCP-approved rust-lang#110680.

Best reviewed commit by commit. Please see individual commit messages for further details.

Pinging owner of pattern types @oli-obk & owner of view types @scrabsha for visibility.

<sub>(No LLM was or will be used by me during the entire creation process of this PR)</sub>
…ternal-macro, r=petrochenkov

do not lint `redundant_lifetimes` on items from external macros

derived impls copy the lifetime spans from the derive input so the external macro check on the lint span never fires and the lint is reported on the generated impl. that also left `#[expect(redundant_lifetimes)]` on a derived struct unfulfillable. now the lint skips items whose own span is in an external macro.

fixes rust-lang#150553
as suggested in rust-lang#150553 (comment)

r? @petrochenkov
feat: support nested functions with `#[offload_kernel]`

Related to rust-lang#131513.

Allows annotating nested functions with `#[offload_kernel]`, similar to autodiff.

Also fixes the error message when `#[offload_kernel]` is used on anything other than functions.

r? @ZuseZ4

(@Sa4dUs, ping)
@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 12, 2026
@rust-bors

rust-bors Bot commented Nov 12, 2026

Copy link
Copy Markdown
Contributor

☀️ Test successful - CI
Approved by: Zalathar
Duration: 3h 22m 14s
Pushing 6b05f82 to main...

@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 ee8268e (parent) -> 6b05f82 (this PR)

Test differences

Show 291 test diffs

Stage 0

  • binary_search_util::tests::binary_search_slice_test: pass -> [missing] (J4)

Stage 1

  • [ui] tests/ui/checked-type-aliases/lint-explicit-outlives-requirements.rs: [missing] -> pass (J0)
  • [ui] tests/ui/higher-ranked/trait-bounds/normalize-under-binder/try-from-error-debug-bound-81162.rs: [missing] -> pass (J0)
  • [ui] tests/ui/offload/offload_kernel_illegal.rs: [missing] -> pass (J0)
  • [ui] tests/ui/recursion/infinite-dereference-recursion-issue-67064.rs: [missing] -> pass (J0)
  • [ui] tests/ui/type/pattern_types/feature-gate-pattern_types.rs: pass -> [missing] (J0)
  • [ui] tests/ui/type/pattern_types/feature-gate-pattern_types.rs#disabled: [missing] -> pass (J0)
  • [ui] tests/ui/type/pattern_types/feature-gate-pattern_types.rs#enabled: [missing] -> pass (J0)
  • [ui] tests/ui/type/pattern_types/feature-gate-pattern_types2.rs: pass -> [missing] (J0)
  • [ui (polonius)] tests/ui/checked-type-aliases/lint-explicit-outlives-requirements.rs: [missing] -> pass (J1)
  • [ui (polonius)] tests/ui/higher-ranked/trait-bounds/normalize-under-binder/try-from-error-debug-bound-81162.rs: [missing] -> pass (J1)
  • [ui (polonius)] tests/ui/offload/offload_kernel_illegal.rs: [missing] -> pass (J1)
  • [ui (polonius)] tests/ui/recursion/infinite-dereference-recursion-issue-67064.rs: [missing] -> pass (J1)
  • [ui (polonius)] tests/ui/type/pattern_types/feature-gate-pattern_types.rs: pass -> [missing] (J1)
  • [ui (polonius)] tests/ui/type/pattern_types/feature-gate-pattern_types.rs#disabled: [missing] -> pass (J1)
  • [ui (polonius)] tests/ui/type/pattern_types/feature-gate-pattern_types.rs#enabled: [missing] -> pass (J1)
  • [ui (polonius)] tests/ui/type/pattern_types/feature-gate-pattern_types2.rs: pass -> [missing] (J1)
  • [pretty] tests/pretty/offload/offload_kernel_nested.rs#device: [missing] -> pass (J4)
  • [pretty] tests/pretty/offload/offload_kernel_nested.rs#host: [missing] -> pass (J4)
  • [ui] tests/ui-fulldeps/internal-lints/lint_pass_impl_without_macro.rs: ignore (ignored when the bootstrapping stage is stage1) -> pass (J4)
  • [ui] tests/ui-fulldeps/internal-lints/missing-generic-type-visitable-derive.rs: ignore (ignored when the bootstrapping stage is stage1) -> pass (J4)
  • binary_search_util::tests::binary_search_slice_test: pass -> [missing] (J6)

Stage 2

  • [ui] tests/ui/checked-type-aliases/lint-explicit-outlives-requirements.rs: [missing] -> pass (J2)
  • [ui] tests/ui/higher-ranked/trait-bounds/normalize-under-binder/try-from-error-debug-bound-81162.rs: [missing] -> pass (J2)
  • [ui] tests/ui/offload/offload_kernel_illegal.rs: [missing] -> pass (J2)
  • [ui] tests/ui/recursion/infinite-dereference-recursion-issue-67064.rs: [missing] -> pass (J2)
  • [ui] tests/ui/type/pattern_types/feature-gate-pattern_types.rs: pass -> [missing] (J2)
  • [ui] tests/ui/type/pattern_types/feature-gate-pattern_types.rs#disabled: [missing] -> pass (J2)
  • [ui] tests/ui/type/pattern_types/feature-gate-pattern_types.rs#enabled: [missing] -> pass (J2)
  • [ui] tests/ui/type/pattern_types/feature-gate-pattern_types2.rs: pass -> [missing] (J2)
  • [pretty] tests/pretty/offload/offload_kernel_nested.rs#device: [missing] -> ignore (only executed when the release channel is nightly) (J3)
  • [pretty] tests/pretty/offload/offload_kernel_nested.rs#host: [missing] -> ignore (only executed when the release channel is nightly) (J3)
  • [pretty] tests/pretty/offload/offload_kernel_nested.rs#device: [missing] -> pass (J5)
  • [pretty] tests/pretty/offload/offload_kernel_nested.rs#host: [missing] -> pass (J5)

Additionally, 257 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 6b05f82b4f2d1309cdbddece388c9e4d26f481fc --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-mingw-1: -> 3h 5m (+inf%)
  2. test-x86_64-gnu-aux: 1h 43m -> 3h 6m (+80.9%)
  3. dist-x86_64-msvc-alt: 1h 40m -> 2h 53m (+73.7%)
  4. test-aarch64-apple-1: 1h 32m -> 2h 32m (+65.4%)
  5. test-x86_64-gnu-stdlib-semver-check: 9m 15s -> 14m 58s (+61.8%)
  6. dist-loongarch64-linux: 1h 21m -> 2h 9m (+59.3%)
  7. test-x86_64-gnu-gcc-core-tests: 11m 11s -> 17m 20s (+55.0%)
  8. dist-powerpc64le-linux-gnu: 1h 9m -> 1h 44m (+49.7%)
  9. test-x86_64-rust-for-linux: 41m 3s -> 1h (+48.4%)
  10. dist-riscv64-linux-musl: 1h 3m -> 1h 32m (+45.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.

@rust-bors

rust-bors Bot commented Nov 12, 2026

Copy link
Copy Markdown
Contributor

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#165804 cg_llvm: Use an invariant lifetime brand for LLVM values a585936bb53cb185077d90eadda773cd8da1ea0c
(link)
#165778 Bump stage0 to 1.101.0-beta.1 3e1d7486ba8aa147e5c3ed02eb470a316ea1b315
(link)
#165412 Implement core::ops::FnAddr adcb6e1b03993846f7577ecaef3b1bdb212f72ad
(link)
#165487 Migrate built-in macros pattern_type & view_type to mac… cdb99cc155a00196356c52821e45f15e2f7ee533
(link)
#165818 do not lint redundant_lifetimes on items from external ma… 24c87007a1ffa4c19253342abaa9ab130c622635
(link)
#163077 feat: support nested functions with #[offload_kernel] 7a9356a144136c4679936f82e2def40ea9170e40
(link)
#164795 Extend support of lint explicit_outlives_requirements to … 36fe05f02dbd108dbf26d9105e4481fcec3179ca
(link)
#165578 Avoid Hash::hash when stable-hashing various types d3e179407e69c77549ced3a78ddce36c927a3c83
(link)
#165729 tests: Add regression test for infinite recursive dereferen… 694cd3d1460f314fe121e9ffa72bf0ddbc4e29a9
(link)
#165822 Remove unused compiler modules and types 58ab8f2c10e987666341d66fe179c56d4eeedd14
(link)
#165824 Add regression test for HRTB projection bound with TryFrom … 2e33509f292f44696dbbd8828e384d183478e09a
(link)

parent commit: ee8268e23d

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.

@rust-timer

Copy link
Copy Markdown
Collaborator

Finished benchmarking commit (6b05f82): 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)

Results (primary 1.2%, secondary 2.3%)

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

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

Cycles

Results (primary -2.9%, secondary -1.3%)

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

mean range count
Regressions ❌
(primary)
5.8% [5.8%, 5.8%] 1
Regressions ❌
(secondary)
4.5% [4.5%, 4.5%] 1
Improvements ✅
(primary)
-4.3% [-5.3%, -3.6%] 6
Improvements ✅
(secondary)
-4.1% [-4.4%, -3.9%] 2
All ❌✅ (primary) -2.9% [-5.3%, 5.8%] 7

Binary size

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

Bootstrap: 484.606s -> 484.187s (-0.09%)
Artifact size: 406.06 MiB -> 406.04 MiB (-0.00%)

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

Labels

A-attributes Area: Attributes (`#[…]`, `#![…]`) A-binaryheap Area: `std::collections::BinaryHeap` A-btree Area: `std::collections::{BTreeMap, BTreeSet}` A-collections Area: `std::collections` (prefer A-binaryheap, A-btree, A-hashtable, A-linkedlist, A-vecdeque) A-filesystem Area: `std::fs` A-fmt Area: `core::fmt` A-linkedlist Area: `std::collections::LinkedList` A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. A-networking Area: `std::net` A-option-result Area: Option and Result combinators A-raw-pointers Area: raw pointers, MaybeUninit, NonNull A-rc Area: `Rc` and `Arc` A-run-make Area: port run-make Makefiles to rmake.rs A-slice-vec Area: `[T]` and `Vec<T>` A-str Area: `str` and `String` A-test-infra-minicore Area: `minicore` test auxiliary and `//@ add-minicore` A-vecdeque Area: `std::collections::VecDeque` F-autodiff `#![feature(autodiff)]` merged-by-bors This PR was explicitly merged by bors. O-windows Operating system: Windows PG-exploit-mitigations Project group: Exploit mitigations rollup A PR which is a rollup T-bootstrap Relevant to the bootstrap subteam: Rust's build system (x.py and src/bootstrap) T-clippy Relevant to the Clippy team. 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-release Relevant to the release subteam, 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. 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.