Skip to content

Conversation

@JonathanBrouwer
Copy link
Contributor

@JonathanBrouwer JonathanBrouwer commented Dec 31, 2025

Successful merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

ChayimFriedman2 and others added 30 commits October 27, 2025 18:04
Because some AES key scheduling instructions require *either* Zkne or
Zknd extension, we must have a target feature to represent
`(Zkne || Zknd)`.

This commit adds (perma-unstable) target feature to the RISC-V
architecture: `zkne_or_zknd` for this purpose.

Helped-by: sayantn <sayantn05@gmail.com>
…insics

Using the inline assembly and `zkne_or_zknd` target feature could avoid
current issues regarding intrinsics available when either Zkne or Zknd
is available.

Before this commit, intrinsics `aes64ks1i` and `aes64ks2` required
both Zkne and Zknd extensions, not either Zkne or Zknd.

Closes: rust-lang/stdarch#1765
This updates the rust-version file to f41f404.
Pull recent changes from https://github.com/rust-lang/rust via Josh.

Upstream ref: f41f404
Filtered ref: 5abf37848786e70eb8136f43225b3470afea6dea
Upstream diff: rust-lang/rust@0208ee0...f41f404

This merge was created using https://github.com/rust-lang/josh-sync.
The diagnostics collection globally tracks the generation for all loaded workspaces as its shared between them, yet the flycheck actors track their own separate generations per workspace.
This mismatch could cause flycheck to not work correctly when multiple workspaces were loaded.
fix: Fix flycheck generations not being synced for multiple workspaces
This updates the rust-version file to e7d4414.
Pull recent changes from https://github.com/rust-lang/rust via Josh.

Upstream ref: e7d4414
Filtered ref: fe2cf3fa56a4ce08f56aee660fbe289c7d13dede
Upstream diff: rust-lang/rust@f41f404...e7d4414

This merge was created using https://github.com/rust-lang/josh-sync.
ChayimFriedman2 and others added 10 commits December 31, 2025 06:43
…e-repr-c

fix: don't fire `non_camel_case_types` lint for structs/enums marked with `repr(C)`
…tyle

feat: Add #[rust_analyzer::macro_style()] attribute to control macro completion brace style
Example
---
```rust
trait T {}
impl T for {}
```

**Before this PR**

```rust
trait T {}
impl T for {}
  // ^ dyn
```

**After this PR**

```rust
trait T {}
impl T for {}
```
…d-dyn-hint

Fix incorrect dyn hint in `impl Trait for`
This makes the tests more robust against sysroot layout changes and
slightly simplifies them.
…, r=Amanieu

RISC-V: Implement (Zkne or Zknd) intrinsics correctly

On rust-lang/stdarch#1765, it has been pointed out that two RISC-V (64-bit only) intrinsics to perform AES key scheduling have wrong target feature.
`aes64ks1i` and `aes64ks2` instructions require *either* Zkne (scalar cryptography: AES encryption) or Zknd (scalar cryptography: AES decryption) extension (or both) but corresponding Rust intrinsics (in `core::arch::riscv64`) required *both* Zkne and Zknd extensions.

An excerpt from the original intrinsics:

```rust
#[target_feature(enable = "zkne", enable = "zknd")]
```

To fix that, we need to:

1.  Represent a condition where *either* Zkne or Zknd is available and
2.  Workaround an issue: `llvm.riscv.aes64ks1i` / `llvm.riscv.aes64ks2` LLVM intrinsics require either Zkne or Zknd extension.

This PR attempts to resolve them by:

1.  Adding a perma-unstable RISC-V target feature: `zkne_or_zknd` (implied from both `zkne` and `zknd`) and
2.  Using inline assembly to construct machine code directly (because `zkne_or_zknd` alone cannot imply neither Zkne nor Zknd, we cannot use LLVM intrinsics).

The author confirmed that we can construct an AES key scheduling function with decent performance using fixed `aes64ks1i` and `aes64ks2` intrinsics (with optimization enabled).
…jackh726

Remove `feature(string_deref_patterns)`

The older `string_deref_patterns` feature has been superseded by the newer and more general `deref_patterns` feature. Removing string-deref-patterns allows us to get rid of a few tricky special cases in match lowering, which are different from the special cases used by deref-patterns.

The handful of existing tests for `string_deref_patterns` have been migrated to use `deref_patterns` instead. Current nightly users of the older feature should hopefully be able to migrate to the newer feature without too much trouble.

Note that `deref_patterns` is currently marked as an “incomplete” feature, because it doesn't have an accepted RFC. But `string_deref_patterns` doesn't appear to have ever had an accepted RFC either, so arguably it should have been marked incomplete too.

---
- Tracking issue for both features: rust-lang#87121
- Original implementation: rust-lang#98914
- [Zulip thread: Can we remove `#![feature(string_deref_patterns)]`?](https://rust-lang.zulipchat.com/#narrow/channel/131828-t-compiler/topic/Can.20we.20remove.20.60.23!.5Bfeature.28string_deref_patterns.29.5D.60.3F/with/565787352)
`rust-analyzer` subtree update

Subtree update of `rust-analyzer` to rust-lang/rust-analyzer@76d44ff.

Created using https://github.com/rust-lang/josh-sync.

r? `@ghost`
…r, r=Urgau,jieyouxu

Use --print target-libdir in run-make tests

This makes the tests more robust against sysroot layout changes and slightly simplifies them.
@rustbot rustbot added A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. A-run-make Area: port run-make Makefiles to rmake.rs 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-rust-analyzer Relevant to the rust-analyzer team, which will review and decide on the PR/issue. rollup A PR which is a rollup labels Dec 31, 2025
@JonathanBrouwer
Copy link
Contributor Author

@bors r+ rollup=never p=5

@bors
Copy link
Collaborator

bors commented Dec 31, 2025

📌 Commit 552918b has been approved by JonathanBrouwer

It is now in the queue for this repository.

@bors bors 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 Dec 31, 2025
@bors
Copy link
Collaborator

bors commented Dec 31, 2025

⌛ Testing commit 552918b with merge 8d670b9...

@bors
Copy link
Collaborator

bors commented Dec 31, 2025

☀️ Test successful - checks-actions
Approved by: JonathanBrouwer
Pushing 8d670b9 to main...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Dec 31, 2025
@bors bors merged commit 8d670b9 into rust-lang:main Dec 31, 2025
12 checks passed
@rustbot rustbot added this to the 1.94.0 milestone Dec 31, 2025
@rust-timer
Copy link
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#146798 RISC-V: Implement (Zkne or Zknd) intrinsics correctly 12df87bcea4c7fa8372363a64e1009507760a1a0 (link)
#150337 docs: fix typo in std::io::buffered 8bda6f895b8048036be113554aa047a09540ecbd (link)
#150530 Remove feature(string_deref_patterns) 52fb6b79c74fa036e492b9a07d8021462c53a908 (link)
#150543 rust-analyzer subtree update d69af5017f4f05decade41193fe67973da681466 (link)
#150544 Use --print target-libdir in run-make tests df73e9affcd54055aea3fd4374ccd1340ec0d7d0 (link)

previous master: a2bc948b7f

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
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 a2bc948 (parent) -> 8d670b9 (this PR)

Test differences

Show 60 test diffs

Stage 0

  • builtin_derive::tests::coerce_pointee_predicates: [missing] -> pass (J2)
  • builtin_derive::tests::coerce_pointee_trait_ref: [missing] -> pass (J2)
  • builtin_derive::tests::simple_macros_predicates: [missing] -> pass (J2)
  • builtin_derive::tests::simple_macros_trait_ref: [missing] -> pass (J2)
  • consteval::tests::builtin_derive_macro: pass -> ignore (builtin derive macros are currently not working with MIR eval) (J2)
  • handlers::convert_to_guarded_return::tests::indentations: [missing] -> pass (J2)
  • handlers::incorrect_case::change_case::allow_with_repr_c: [missing] -> pass (J2)
  • render::macro_::tests::preferred_macro_braces: [missing] -> pass (J2)
  • tests::closure_captures::alias_needs_to_be_normalized: [missing] -> pass (J2)
  • tests::record::functional_update_exist_update: [missing] -> pass (J2)
  • tests::runner::ok::format_args_named_arg_keyword: [missing] -> pass (J2)
  • tests::simple::cannot_coerce_capturing_closure_to_fn_ptr: [missing] -> pass (J2)
  • tests::special::completes_in_macro_body: [missing] -> pass (J2)
  • tests::special::completes_macro_segment: [missing] -> pass (J2)
  • upvars::tests::closure_var: [missing] -> pass (J2)
  • upvars::tests::closure_var_nested: [missing] -> pass (J2)
  • upvars::tests::nested: [missing] -> pass (J2)
  • upvars::tests::simple: [missing] -> pass (J2)

Stage 1

  • builtin_derive::tests::coerce_pointee_predicates: [missing] -> pass (J0)
  • builtin_derive::tests::coerce_pointee_trait_ref: [missing] -> pass (J0)
  • builtin_derive::tests::simple_macros_predicates: [missing] -> pass (J0)
  • builtin_derive::tests::simple_macros_trait_ref: [missing] -> pass (J0)
  • consteval::tests::builtin_derive_macro: pass -> ignore (builtin derive macros are currently not working with MIR eval) (J0)
  • handlers::convert_to_guarded_return::tests::indentations: [missing] -> pass (J0)
  • handlers::incorrect_case::change_case::allow_with_repr_c: [missing] -> pass (J0)
  • render::macro_::tests::preferred_macro_braces: [missing] -> pass (J0)
  • tests::closure_captures::alias_needs_to_be_normalized: [missing] -> pass (J0)
  • tests::record::functional_update_exist_update: [missing] -> pass (J0)
  • tests::runner::ok::format_args_named_arg_keyword: [missing] -> pass (J0)
  • tests::simple::cannot_coerce_capturing_closure_to_fn_ptr: [missing] -> pass (J0)
  • tests::special::completes_in_macro_body: [missing] -> pass (J0)
  • tests::special::completes_macro_segment: [missing] -> pass (J0)
  • upvars::tests::closure_var: [missing] -> pass (J0)
  • upvars::tests::closure_var_nested: [missing] -> pass (J0)
  • upvars::tests::nested: [missing] -> pass (J0)
  • upvars::tests::simple: [missing] -> pass (J0)
  • [ui] tests/ui/deref-patterns/basic.rs: pass -> [missing] (J2)
  • [ui] tests/ui/deref-patterns/default-infer.rs: pass -> [missing] (J2)
  • [ui] tests/ui/deref-patterns/gate.rs: pass -> [missing] (J2)
  • [ui] tests/ui/deref-patterns/refs.rs: pass -> [missing] (J2)
  • [ui] tests/ui/pattern/deref-patterns/basic.rs: [missing] -> pass (J2)
  • [ui] tests/ui/pattern/deref-patterns/default-infer.rs: [missing] -> pass (J2)
  • [ui] tests/ui/pattern/deref-patterns/refs.rs: [missing] -> pass (J2)

Stage 2

  • [ui] tests/ui/deref-patterns/basic.rs: pass -> [missing] (J1)
  • [ui] tests/ui/deref-patterns/default-infer.rs: pass -> [missing] (J1)
  • [ui] tests/ui/deref-patterns/gate.rs: pass -> [missing] (J1)
  • [ui] tests/ui/deref-patterns/refs.rs: pass -> [missing] (J1)
  • [ui] tests/ui/pattern/deref-patterns/basic.rs: [missing] -> pass (J1)
  • [ui] tests/ui/pattern/deref-patterns/default-infer.rs: [missing] -> pass (J1)
  • [ui] tests/ui/pattern/deref-patterns/refs.rs: [missing] -> pass (J1)

Additionally, 10 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 8d670b93d40737e1b320fd892c6f169ffa35e49e --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-x86_64-apple: 7839.8s -> 6504.8s (-17.0%)
  2. dist-aarch64-msvc: 6096.7s -> 5384.3s (-11.7%)
  3. dist-aarch64-apple: 7888.6s -> 7124.3s (-9.7%)
  4. x86_64-msvc-1: 8273.9s -> 8930.5s (+7.9%)
  5. dist-aarch64-llvm-mingw: 6742.5s -> 6217.9s (-7.8%)
  6. dist-apple-various: 4340.2s -> 4674.6s (+7.7%)
  7. aarch64-apple: 9591.4s -> 8884.6s (-7.4%)
  8. dist-riscv64-linux: 5184.9s -> 4825.7s (-6.9%)
  9. dist-x86_64-musl: 7418.4s -> 6959.6s (-6.2%)
  10. dist-android: 1621.1s -> 1520.9s (-6.2%)
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
Collaborator

Finished benchmarking commit (8d670b9): comparison URL.

Overall result: no relevant changes - no action needed

@rustbot label: -perf-regression

Instruction count

This benchmark run did not return any relevant results for this metric.

Max RSS (memory usage)

This benchmark run did not return any relevant results for this metric.

Cycles

Results (primary 8.0%, secondary 17.3%)

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

mean range count
Regressions ❌
(primary)
8.0% [2.0%, 14.4%] 13
Regressions ❌
(secondary)
17.3% [2.6%, 35.3%] 13
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 8.0% [2.0%, 14.4%] 13

Binary size

This benchmark run did not return any relevant results for this metric.

Bootstrap: 475.096s -> 477.934s (0.60%)
Artifact size: 390.85 MiB -> 390.83 MiB (-0.00%)

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

Labels

A-LLVM Area: Code generation parts specific to LLVM. Both correctness bugs and optimization-related issues. A-run-make Area: port run-make Makefiles to rmake.rs merged-by-bors This PR was explicitly merged by bors. rollup A PR which is a rollup S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. 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-rust-analyzer Relevant to the rust-analyzer team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.