Skip to content

Comments

Rollup of 4 pull requests#150628

Merged
bors merged 14 commits intorust-lang:mainfrom
JonathanBrouwer:rollup-zy040xr
Jan 3, 2026
Merged

Rollup of 4 pull requests#150628
bors merged 14 commits intorust-lang:mainfrom
JonathanBrouwer:rollup-zy040xr

Conversation

@JonathanBrouwer
Copy link
Contributor

@JonathanBrouwer JonathanBrouwer commented Jan 2, 2026

Successful merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

fee1-dead and others added 14 commits December 27, 2025 14:34
The `gpu-kernel` calling convention has several restrictions that were
not enforced by the compiler until now.
Add the following restrictions:

1. Cannot be async
2. Cannot be called
3. Cannot return values, return type must be `()` or `!`
4. Arguments should be primitives, i.e. passed by value. More complicated
   types can work when you know what you are doing, but it is rather
   unintuitive, one needs to know ABI/compiler internals.
5. Export name should be unmangled, either through `no_mangle` or
   `export_name`. Kernels are searched by name on the CPU side, having
   a mangled name makes it hard to find and probably almost always
   unintentional.
…bilee

Add checks for gpu-kernel calling conv

The `gpu-kernel` calling convention has several restrictions that were not enforced by the compiler until now.
Add the following restrictions:

1. Cannot be async
2. Cannot be called
3. Cannot return values, return type must be `()` or `!`
4. Arguments should be simple, i.e. passed by value. More complicated types can work when you know what you are doing, but it is rather unintuitive, one needs to know ABI/compiler internals.
5. Export name should be unmangled, either through `no_mangle` or `export_name`. Kernels are searched by name on the CPU side, having a mangled name makes it hard to find and probably almost always unintentional.

Tracking issue: rust-lang#135467
amdgpu target tracking issue: rust-lang#135024

``@workingjubilee,`` these should be all the restrictions we talked about a year ago.

cc ``@RDambrosio016`` ``@kjetilkjeka`` for nvptx
…imulacrum

std: merge `sys::pal::common` and `sys_common` into `sys::helpers`

As per rust-lang#117276, this removes `sys_common` and moves its functionality and that of `sys::pal::common` into a newly created `sys::helpers` module.
…l, r=estebank

do not suggest method call removal if it changes receiver type

Fixes rust-lang#149487, cc `@estebank`
…est, r=lolbinarycat

Update `browser-ui-test` version to `0.23.0`

It comes with new features like conditions and an update to `puppeteer`.
@rustbot rustbot added A-tidy Area: The tidy tool O-apple Operating system: Apple / Darwin (macOS, iOS, tvOS, visionOS, watchOS) O-unix Operating system: Unix-like O-wasi Operating system: Wasi, Webassembly System Interface 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. 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. rollup A PR which is a rollup labels Jan 2, 2026
@JonathanBrouwer
Copy link
Contributor Author

@bors r+ rollup=never p=5

@bors
Copy link
Collaborator

bors commented Jan 2, 2026

📌 Commit 03a0155 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 Jan 2, 2026
@bors
Copy link
Collaborator

bors commented Jan 2, 2026

⌛ Testing commit 03a0155 with merge e8f3cfc...

@bors
Copy link
Collaborator

bors commented Jan 3, 2026

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

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Jan 3, 2026
@bors bors merged commit e8f3cfc into rust-lang:main Jan 3, 2026
12 checks passed
@rustbot rustbot added this to the 1.94.0 milestone Jan 3, 2026
@rust-timer
Copy link
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#149991 Add checks for gpu-kernel calling conv fdce4f9555edf36ba7c9941a3263a41acb9bd71e (link)
#150047 std: merge sys::pal::common and sys_common into `sys::h… 5481e887ed9920938c22591a40fa5c0448c38b59 (link)
#150441 do not suggest method call removal if it changes receiver t… 27280971900e46d5dc9a228e370c850935acff53 (link)
#150616 Update browser-ui-test version to 0.23.0 7e45d988cc447ac55ba5a9d59e5e71a5ec36c545 (link)

previous master: 85c8ff69cb

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

github-actions bot commented Jan 3, 2026

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 85c8ff6 (parent) -> e8f3cfc (this PR)

Test differences

Show 270 test diffs

Stage 0

  • errors::verify_hir_typeck_const_continue_bad_label_34: pass -> [missing] (J2)
  • errors::verify_hir_typeck_const_continue_bad_label_35: [missing] -> pass (J2)
  • errors::verify_hir_typeck_gpu_kernel_abi_cannot_be_called_34: [missing] -> pass (J2)
  • errors::verify_hir_typeck_project_on_non_pin_project_type_35: pass -> [missing] (J2)
  • lints::verify_lint_ambiguous_glob_reexport_114: pass -> [missing] (J2)
  • lints::verify_lint_associated_const_elided_lifetime_117: pass -> [missing] (J2)
  • lints::verify_lint_atomic_ordering_fence_97: [missing] -> pass (J2)
  • lints::verify_lint_doc_auto_cfg_expects_hide_or_show_127: pass -> [missing] (J2)
  • lints::verify_lint_doc_auto_cfg_expects_hide_or_show_129: [missing] -> pass (J2)
  • lints::verify_lint_doc_auto_cfg_wrong_literal_136: pass -> [missing] (J2)
  • lints::verify_lint_doc_auto_cfg_wrong_literal_138: [missing] -> pass (J2)
  • lints::verify_lint_doc_invalid_132: [missing] -> pass (J2)
  • lints::verify_lint_doc_test_unknown_138: pass -> [missing] (J2)
  • lints::verify_lint_doc_test_unknown_140: [missing] -> pass (J2)
  • lints::verify_lint_doc_unknown_any_137: [missing] -> pass (J2)
  • lints::verify_lint_doc_unknown_include_131: pass -> [missing] (J2)
  • lints::verify_lint_doc_unknown_spotlight_132: pass -> [missing] (J2)
  • lints::verify_lint_doc_unknown_spotlight_134: [missing] -> pass (J2)
  • lints::verify_lint_empty_attribute_123: [missing] -> pass (J2)
  • lints::verify_lint_hidden_glob_reexport_115: pass -> [missing] (J2)
  • lints::verify_lint_ill_formed_attribute_input_111: [missing] -> pass (J2)
  • lints::verify_lint_improper_gpu_kernel_arg_92: [missing] -> pass (J2)
  • lints::verify_lint_invalid_asm_label_binary_109: [missing] -> pass (J2)
  • lints::verify_lint_invalid_asm_label_format_arg_106: pass -> [missing] (J2)
  • lints::verify_lint_invalid_asm_label_named_107: [missing] -> pass (J2)
  • lints::verify_lint_invalid_target_122: pass -> [missing] (J2)
  • lints::verify_lint_invalid_target_124: [missing] -> pass (J2)
  • lints::verify_lint_missing_gpu_kernel_export_name_93: [missing] -> pass (J2)
  • lints::verify_lint_reserved_multihash_120: pass -> [missing] (J2)
  • lints::verify_lint_reserved_prefix_110: pass -> [missing] (J2)
  • lints::verify_lint_reserved_string_121: [missing] -> pass (J2)
  • lints::verify_lint_unnecessary_qualification_118: [missing] -> pass (J2)
  • lints::verify_lint_unused_allocation_mut_103: pass -> [missing] (J2)
  • lints::verify_lint_unused_coroutine_99: pass -> [missing] (J2)
  • lints::verify_lint_unused_duplicate_124: pass -> [missing] (J2)
  • lints::verify_lint_unused_duplicate_126: [missing] -> pass (J2)
  • lints::verify_lint_unused_lifetime_114: [missing] -> pass (J2)
  • lints::verify_lint_unused_result_97: pass -> [missing] (J2)
  • transmute::verify_lint_undefined_transmute_142: [missing] -> pass (J2)

Stage 1

  • errors::verify_hir_typeck_const_continue_bad_label_34: pass -> [missing] (J0)
  • errors::verify_hir_typeck_project_on_non_pin_project_type_36: [missing] -> pass (J0)
  • lints::verify_lint_associated_const_elided_lifetime_117: pass -> [missing] (J0)
  • lints::verify_lint_associated_const_elided_lifetime_119: [missing] -> pass (J0)
  • lints::verify_lint_atomic_ordering_invalid_98: [missing] -> pass (J0)
  • lints::verify_lint_atomic_ordering_store_94: pass -> [missing] (J0)
  • lints::verify_lint_atomic_ordering_store_96: [missing] -> pass (J0)
  • lints::verify_lint_doc_auto_cfg_hide_show_expects_list_129: pass -> [missing] (J0)
  • lints::verify_lint_doc_auto_cfg_hide_show_unexpected_item_128: pass -> [missing] (J0)
  • lints::verify_lint_doc_auto_cfg_hide_show_unexpected_item_130: [missing] -> pass (J0)
  • lints::verify_lint_doc_invalid_130: pass -> [missing] (J0)
  • lints::verify_lint_doc_test_literal_139: pass -> [missing] (J0)
  • lints::verify_lint_doc_test_literal_141: [missing] -> pass (J0)
  • lints::verify_lint_doc_test_takes_list_139: [missing] -> pass (J0)
  • lints::verify_lint_doc_test_unknown_138: pass -> [missing] (J0)
  • lints::verify_lint_doc_test_unknown_140: [missing] -> pass (J0)
  • lints::verify_lint_doc_unknown_passes_133: pass -> [missing] (J0)
  • lints::verify_lint_doc_unknown_passes_135: [missing] -> pass (J0)
  • lints::verify_lint_empty_attribute_121: pass -> [missing] (J0)
  • lints::verify_lint_ill_formed_attribute_input_111: [missing] -> pass (J0)
  • lints::verify_lint_invalid_asm_label_format_arg_108: [missing] -> pass (J0)
  • lints::verify_lint_invalid_target_122: pass -> [missing] (J0)
  • lints::verify_lint_missing_gpu_kernel_export_name_93: [missing] -> pass (J0)
  • lints::verify_lint_raw_prefix_111: pass -> [missing] (J0)
  • lints::verify_lint_reserved_string_119: pass -> [missing] (J0)
  • lints::verify_lint_unit_bindings_104: pass -> [missing] (J0)
  • lints::verify_lint_unnecessary_qualification_116: pass -> [missing] (J0)
  • lints::verify_lint_unqualified_local_imports_120: [missing] -> pass (J0)
  • lints::verify_lint_unused_allocation_104: [missing] -> pass (J0)
  • lints::verify_lint_unused_allocation_mut_103: pass -> [missing] (J0)
  • lints::verify_lint_unused_closure_98: pass -> [missing] (J0)
  • lints::verify_lint_unused_crate_dependency_110: [missing] -> pass (J0)
  • lints::verify_lint_unused_duplicate_126: [missing] -> pass (J0)
  • lints::verify_lint_unused_lifetime_112: pass -> [missing] (J0)
  • lints::verify_lint_unused_lifetime_114: [missing] -> pass (J0)
  • lints::verify_lint_unused_result_97: pass -> [missing] (J0)
  • lints::verify_lint_unused_visibilities_125: pass -> [missing] (J0)
  • transmute::verify_lint_undefined_transmute_140: pass -> [missing] (J0)
  • [ui] tests/ui/abi/cannot-return.rs#amdgpu: [missing] -> pass (J2)
  • [ui] tests/ui/lint/lint-gpu-kernel.rs#amdgpu: [missing] -> pass (J2)
  • [ui] tests/ui/lint/lint-gpu-kernel.rs#nvptx: [missing] -> pass (J2)
  • sys::helpers::tests::stack_allocation_fails: [missing] -> pass (J5)
  • sys::pal::common::tests::bench_heap_path_alloc: pass -> [missing] (J5)
  • sys::pal::common::tests::bench_stack_path_alloc: pass -> [missing] (J5)
  • sys::pal::common::tests::heap_allocation_fails: pass -> [missing] (J5)
  • sys::pal::common::tests::heap_allocation_works: pass -> [missing] (J5)

Stage 2

  • sys::helpers::tests::heap_allocation_works: [missing] -> pass (J1)
  • sys::helpers::tests::stack_allocation_works: [missing] -> pass (J1)
  • sys::pal::common::tests::bench_heap_path_alloc: pass -> [missing] (J1)
  • sys::pal::common::tests::bench_stack_path_alloc: pass -> [missing] (J1)
  • sys::pal::common::tests::heap_allocation_fails: pass -> [missing] (J1)
  • sys::pal::common::tests::heap_allocation_works: pass -> [missing] (J1)
  • sys::pal::common::tests::stack_allocation_fails: pass -> [missing] (J1)
  • [ui] tests/ui/abi/cannot-return.rs#amdgpu: [missing] -> ignore (gcc backend is marked as ignore) (J3)
  • [ui] tests/ui/lint/lint-gpu-kernel.rs#amdgpu: [missing] -> ignore (gcc backend is marked as ignore) (J3)
  • [ui] tests/ui/lint/lint-gpu-kernel.rs#nvptx: [missing] -> ignore (gcc backend is marked as ignore) (J3)
  • [ui] tests/ui/abi/cannot-be-called.rs#nvptx: [missing] -> pass (J4)
  • [ui] tests/ui/abi/cannot-be-coroutine.rs#amdgpu: [missing] -> pass (J4)
  • [ui] tests/ui/abi/cannot-be-coroutine.rs#nvptx: [missing] -> pass (J4)
  • [ui] tests/ui/abi/cannot-return.rs#amdgpu: [missing] -> pass (J4)
  • [ui] tests/ui/abi/cannot-return.rs#nvptx: [missing] -> pass (J4)

(and 162 additional test diffs)

Additionally, 8 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 e8f3cfc0de70bf82583591f6656e1fba3140253e --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-mingw-1: 9830.6s -> 17441.7s (+77.4%)
  2. dist-x86_64-apple: 6966.2s -> 9385.8s (+34.7%)
  3. dist-x86_64-netbsd: 6038.7s -> 4861.3s (-19.5%)
  4. dist-aarch64-apple: 7804.0s -> 6834.3s (-12.4%)
  5. dist-aarch64-llvm-mingw: 6441.5s -> 5786.9s (-10.2%)
  6. dist-aarch64-msvc: 6374.1s -> 5734.7s (-10.0%)
  7. dist-apple-various: 3917.3s -> 3568.3s (-8.9%)
  8. x86_64-gnu-stable: 8610.8s -> 7852.1s (-8.8%)
  9. x86_64-msvc-2: 8155.1s -> 8776.2s (+7.6%)
  10. i686-gnu-2: 6230.5s -> 5793.5s (-7.0%)
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 (e8f3cfc): 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%] 4
All ❌✅ (primary) - - 0

Max RSS (memory usage)

Results (primary -2.1%, secondary 1.7%)

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.5% [1.7%, 3.5%] 3
Improvements ✅
(primary)
-2.1% [-2.5%, -1.6%] 3
Improvements ✅
(secondary)
-0.5% [-0.5%, -0.5%] 1
All ❌✅ (primary) -2.1% [-2.5%, -1.6%] 3

Cycles

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

Binary size

Results (primary -0.1%, secondary -0.1%)

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)
- - 0
Improvements ✅
(primary)
-0.1% [-0.1%, -0.0%] 46
Improvements ✅
(secondary)
-0.1% [-0.1%, -0.0%] 24
All ❌✅ (primary) -0.1% [-0.1%, -0.0%] 46

Bootstrap: 473.026s -> 472.421s (-0.13%)
Artifact size: 390.79 MiB -> 390.71 MiB (-0.02%)

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

Labels

A-tidy Area: The tidy tool 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-wasi Operating system: Wasi, Webassembly System Interface O-windows Operating system: Windows 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-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. 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.

8 participants