Skip to content

Conversation

tgross35
Copy link
Contributor

@tgross35 tgross35 commented Sep 5, 2025

Successful merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

heiher and others added 10 commits August 21, 2025 18:00
This commit is an extension of previous libstd support but applied to stdio
specifically. The stdio routines are updated away from WASIp1 APIs to using
WASIp2 APIs natively. The end goal is to eventually drop the dependency on
WASIp1 APIs in the standard library entirely in favor of exclusively depending
on WASIp2.
add exact bitshifts

Tracking issue: rust-lang#144336

cc ```@lolbinarycat```
Fix LoongArch C function ABI when passing/returning structs containing floats

Similar to RISC-V, LoongArch passes structs containing only one or two floats (or a float–integer pair) in registers, as long as each element fits into a single corresponding register. Before this PR, Rust did not check the actual offset of the second float or integer; instead, it assumed the standard offset based on the default alignment. However, since the offset can be affected by `#[repr(align(N))]` and `#[repr(packed)]`, this led to miscompilations (see rust-lang#145692). This PR fixes the issue by explicitly specifying the offset for the remainder of the cast.
…float_tests, r=tgross35

Unify and deduplicate algebraic float tests

cc rust-lang#141726

This is a proposal to unify and deduplicate the algebraic tests for f16, f32, f64 and f128
std: Implement WASIp2-specific stdio routines

This commit is an extension of rust-lang#145944 but applied to stdio specifically. The stdio routines are updated away from WASIp1 APIs to using WASIp2 APIs natively. The end goal is to eventually drop the dependency on WASIp1 APIs in the standard library entirely in favor of exclusively depending on WASIp2.
…iler-errors

fix ICE when suggesting `::new`

fixes rust-lang#146174

This code suggests to write `Foo::new(...)` when the user writes `Foo(...)` or `Foo { ... }` and the constructor is private, where `new` is some associated function that returns `Self`.

When checking that the return type of `new` is `Self`, we need to instantiate the parameters of `new` with infer vars, so we don't end up with a type like `Box<$param(0)>` in a context that doesn't have any parameters. But then we can't use `normalize_erasing_late_bound_regions` anymore because that goes though a query that can't deal with infer vars.

Since this is diagnostic-only code that is supposed to check for exactly `-> Self`, I think it's fine to just skip normalizing here, especially since The Correct Way<sup>TM</sup> would involve a probe and make this code even more complicated.

Also, the code here does almost the same thing, and these suggestions can probably be unified in the future: https://github.com/rust-lang/rust/blob/4ca8078d37c53ee4ff8fb32b4453b915116f25b8/compiler/rustc_hir_typeck/src/method/suggest.rs#L2123-L2129

r? ````@compiler-errors````
cc ````@Qelxiros```` -- this should unblock rust-lang#144420
@rustbot rustbot added 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. rollup A PR which is a rollup labels Sep 5, 2025
@tgross35
Copy link
Contributor Author

tgross35 commented Sep 5, 2025

@bors r+ rollup=never p=5

@bors
Copy link
Collaborator

bors commented Sep 5, 2025

📌 Commit 8ff60a6 has been approved by tgross35

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 Sep 5, 2025
@bors
Copy link
Collaborator

bors commented Sep 5, 2025

⌛ Testing commit 8ff60a6 with merge c559c4a...

@bors
Copy link
Collaborator

bors commented Sep 5, 2025

☀️ Test successful - checks-actions
Approved by: tgross35
Pushing c559c4a to master...

@bors bors added the merged-by-bors This PR was explicitly merged by bors. label Sep 5, 2025
@bors bors merged commit c559c4a into rust-lang:master Sep 5, 2025
11 checks passed
@rustbot rustbot added this to the 1.91.0 milestone Sep 5, 2025
@rust-timer
Copy link
Collaborator

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#144342 add exact bitshifts 494530909243c2eb65720451e7c4e1467ae01051 (link)
#145709 Fix LoongArch C function ABI when passing/returning structs… a1c42bce4bfd1d9d52cf8fae84ffc08c9320ed8a (link)
#146152 Unify and deduplicate algebraic float tests da21fa7e5c1715a9441c2adee18849df6bcbb63d (link)
#146207 std: Implement WASIp2-specific stdio routines 7582f7eb5c165f803f7d6dea7f522534e69fafc6 (link)
#146217 fix ICE when suggesting ::new 7385c65a8fe2eb3f51fabe0c7b9ccce725b2c960 (link)

previous master: ad85bc524b

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

Copy link
Contributor

github-actions bot commented Sep 5, 2025

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 ad85bc5 (parent) -> c559c4a (this PR)

Test differences

Show 3852 test diffs

Stage 1

  • floats::f128::test_algebraic: pass -> [missing] (J2)
  • floats::f16::test_algebraic: pass -> [missing] (J2)
  • floats::f32::test_algebraic: pass -> [missing] (J2)
  • floats::f64::test_algebraic: pass -> [missing] (J2)
  • floats::to_algebraic::const_::test_f128: [missing] -> pass (J2)
  • floats::to_algebraic::const_::test_f16: [missing] -> pass (J2)
  • floats::to_algebraic::const_::test_f32: [missing] -> pass (J2)
  • floats::to_algebraic::const_::test_f64: [missing] -> pass (J2)
  • floats::to_algebraic::test_f128: [missing] -> pass (J2)
  • floats::to_algebraic::test_f16: [missing] -> pass (J2)
  • floats::to_algebraic::test_f32: [missing] -> pass (J2)
  • floats::to_algebraic::test_f64: [missing] -> pass (J2)
  • [assembly] tests/assembly-llvm/loongarch-float-struct-abi.rs: [missing] -> pass (J5)
  • [codegen] tests/codegen-llvm/loongarch-abi/cast-local-large-enough.rs: [missing] -> pass (J5)
  • [ui] tests/ui/privacy/suggest-new-projection-ice.rs: [missing] -> pass (J5)

Stage 2

  • [assembly] tests/assembly-llvm/loongarch-float-struct-abi.rs: [missing] -> pass (J0)
  • [codegen] tests/codegen-llvm/loongarch-abi/cast-local-large-enough.rs: [missing] -> pass (J0)
  • [ui] tests/ui/privacy/suggest-new-projection-ice.rs: [missing] -> pass (J1)
  • floats::f32::test_algebraic: pass -> [missing] (J3)
  • floats::f64::test_algebraic: pass -> [missing] (J3)
  • floats::to_algebraic::const_::test_f128: [missing] -> pass (J3)
  • floats::to_algebraic::const_::test_f16: [missing] -> pass (J3)
  • floats::to_algebraic::const_::test_f32: [missing] -> pass (J3)
  • floats::to_algebraic::const_::test_f64: [missing] -> pass (J3)
  • floats::to_algebraic::test_f32: [missing] -> pass (J3)
  • floats::to_algebraic::test_f64: [missing] -> pass (J3)
  • floats::f128::test_algebraic: pass -> [missing] (J4)
  • floats::f16::test_algebraic: pass -> [missing] (J4)
  • floats::to_algebraic::test_f128: [missing] -> pass (J4)
  • floats::to_algebraic::test_f16: [missing] -> pass (J4)

Additionally, 3822 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 c559c4a741836c4ffa8e4f60cb9fe7e92af5298e --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. pr-check-1: 1430.8s -> 1723.2s (20.4%)
  2. x86_64-rust-for-linux: 2562.1s -> 3063.8s (19.6%)
  3. x86_64-gnu-llvm-19: 2422.9s -> 2791.8s (15.2%)
  4. x86_64-gnu-tools: 3342.3s -> 3832.8s (14.7%)
  5. i686-gnu-1: 7276.5s -> 8163.6s (12.2%)
  6. aarch64-apple: 5392.7s -> 6041.4s (12.0%)
  7. i686-gnu-nopt-1: 7474.5s -> 8251.1s (10.4%)
  8. aarch64-gnu-debug: 3810.5s -> 4175.5s (9.6%)
  9. i686-gnu-2: 5489.5s -> 5986.6s (9.1%)
  10. dist-ohos-armv7: 3984.0s -> 4340.6s (9.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 (c559c4a): comparison URL.

Overall result: ❌ regressions - please read the text below

Our benchmarks found a performance regression caused by this PR.
This might be an actual regression, but it can also be just noise.

Next Steps:

  • If the regression was expected or you think it can be justified,
    please write a comment with sufficient written justification, and add
    @rustbot label: +perf-regression-triaged to it, to mark the regression as triaged.
  • If you think that you know of a way to resolve the regression, try to create
    a new PR with a fix for the regression.
  • If you do not understand the regression or you think that it is just noise,
    you can ask the @rust-lang/wg-compiler-performance working group for help (members of this group
    were already notified of this PR).

@rustbot label: +perf-regression
cc @rust-lang/wg-compiler-performance

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.1% [0.1%, 0.1%] 2
Regressions ❌
(secondary)
0.2% [0.0%, 0.3%] 8
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 0.1% [0.1%, 0.1%] 2

Max RSS (memory usage)

Results (primary 0.4%, 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)
3.8% [1.4%, 6.2%] 2
Regressions ❌
(secondary)
3.4% [2.3%, 4.5%] 2
Improvements ✅
(primary)
-1.2% [-2.1%, -0.5%] 4
Improvements ✅
(secondary)
-2.9% [-2.9%, -2.9%] 1
All ❌✅ (primary) 0.4% [-2.1%, 6.2%] 6

Cycles

Results (primary 2.0%, secondary 2.8%)

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

mean range count
Regressions ❌
(primary)
2.0% [2.0%, 2.0%] 1
Regressions ❌
(secondary)
2.8% [2.5%, 3.1%] 2
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
- - 0
All ❌✅ (primary) 2.0% [2.0%, 2.0%] 1

Binary size

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

Bootstrap: 467.829s -> 469.348s (0.32%)
Artifact size: 390.58 MiB -> 390.58 MiB (-0.00%)

@rustbot rustbot added the perf-regression Performance regression. label Sep 5, 2025
@lqd
Copy link
Member

lqd commented Sep 5, 2025

Looks like doc benchmarks, so I guess #144342 -- but it's tiny and expected whenever std/core changes IIRC.

@tgross35 tgross35 deleted the rollup-1bgjms3 branch September 5, 2025 18:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
merged-by-bors This PR was explicitly merged by bors. perf-regression Performance regression. 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.
Projects
None yet
Development

Successfully merging this pull request may close these issues.

9 participants