Skip to content

Conversation

Zalathar
Copy link
Contributor

@Zalathar Zalathar commented Aug 30, 2025

Successful merges:

r? @ghost
@rustbot modify labels: rollup

Create a similar rollup

Rudxain and others added 14 commits July 5, 2025 22:10
Adds the equivalent `nonpoison` types to the `poison::condvar` module.
These types and implementations are gated under the `nonpoison_condvar`
feature gate.

Signed-off-by: Connor Tsui <[email protected]>
Adds tests for the `nonpoison::Mutex` variant by using a macro to
duplicate the existing `poison` tests.

Note that all of the tests here are adapted from the existing `poison`
tests.

Also steals the `test_mutex_arc_condvar` test from `mutex.rs`.

Signed-off-by: Connor Tsui <[email protected]>
Since `WaitTimeoutResult` is poison-agnostic, we want to use the same
type for both variants of `Condvar`.

Signed-off-by: Connor Tsui <[email protected]>
Tracking issue: RUST-139201

Co-authored-by: omanirudh <[email protected]>
Inform compiler of optimizations when the base is known at compile time
and there's a cheaper method available:

* `{integer}.checked_ilog(2)` -> `{integer}.checked_ilog2()`
* `{integer}.checked_ilog(10)` -> `{integer}.checked_ilog10()`
* `{integer}.ilog(2)` -> `{integer}.ilog2()`
* `{integer}.ilog(10)` -> `{integer}.ilog10()`
…boet

fix(lib-std-fs): handle `usize` overflow in `read*`

I assume this is a non-breaking change, as there would be an OOM `panic` anyways. This patch ensures a fast-fail when there's not enough memory to load the file. This only changes behavior on platforms where `usize` is smaller than 64bits
…joboet

Implementation: `#[feature(nonpoison_condvar)]`

Tracking Issue: rust-lang#134645

This PR continues the effort made in rust-lang#144022 by adding the implementation of `nonpoison::condvar`.

Many of the changes here are similar to the changes made to implement `nonpoison::mutex`.

There are two other changes here. The first is that the `Barrier` implementation is migrated to use the `nonpoison::Condvar` instead of the `poison` variant. The second (which might be subject to some discussion) is that `WaitTimeoutResult` is moved up to `mod.rs`, as both `condvar` variants need that type (and I do not know if there is a better place to put it now).

### Related PRs

- `nonpoison_rwlock` implementation: rust-lang#144648
- `nonpoison_once` implementation: rust-lang#144653
…joboet

Stabilize `array_repeat` feature

This closes [tracking issue](rust-lang#126695) and stabilises `array::repeat`
…boet

Optimize `.ilog({2,10})` to `.ilog{2,10}()`

Optimize `.ilog({2,10})` to `.ilog{2,10}()`

Inform compiler of optimizations when the base is known at compile time and there's a cheaper method available:

* `{integer}.checked_ilog(2)` -> `{integer}.checked_ilog2()`
* `{integer}.checked_ilog(10)` -> `{integer}.checked_ilog10()`
* `{integer}.ilog(2)` -> `{integer}.ilog2()`
* `{integer}.ilog(10)` -> `{integer}.ilog10()`
…28, r=tgross35

Add Duration::from_nanos_u128

Feature Gate: `#![feature(duration_from_nanos_u128)]`
ACP: rust-lang/libs-team#567
Tracking issue: rust-lang#139201
Recreated from rust-lang#139243
@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 Aug 30, 2025
@Zalathar
Copy link
Contributor Author

@bors r+ rollup=never p=5

@bors
Copy link
Collaborator

bors commented Aug 30, 2025

📌 Commit f655e6a has been approved by Zalathar

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 Aug 30, 2025
@bors
Copy link
Collaborator

bors commented Aug 30, 2025

⌛ Testing commit f655e6a with merge e95db59...

@bors
Copy link
Collaborator

bors commented Aug 30, 2025

☀️ Test successful - checks-actions
Approved by: Zalathar
Pushing e95db59 to master...

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

📌 Perf builds for each rolled up PR:

PR# Message Perf Build Sha
#143462 fix(lib-std-fs): handle usize overflow in read* 6d434264574b7f8f9a3533856137e4cf7eeb1751 (link)
#144651 Implementation: #[feature(nonpoison_condvar)] 4de4acb021edff5f5d5c05b484ef26563466bb0c (link)
#145465 Stabilize array_repeat feature 2b13931b5040a7ffe36bb79d9af0cbe937dddb93 (link)
#145776 Optimize .ilog({2,10}) to .ilog{2,10}() 0bf813f96d3bfa8c3d85adb05e5083fc41c19b40 (link)
#145969 Add Duration::from_nanos_u128 84ca648f3677d985babe7b9c1f3cc868264beb90 (link)

previous master: 846e377215

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

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 846e377 (parent) -> e95db59 (this PR)

Test differences

Show 1190 test diffs

Stage 1

  • condvar::nonpoison_notify_all: [missing] -> pass (J0)
  • condvar::nonpoison_notify_one: [missing] -> pass (J0)
  • condvar::nonpoison_smoke: [missing] -> pass (J0)
  • condvar::nonpoison_test_mutex_arc_condvar: [missing] -> pass (J0)
  • condvar::nonpoison_wait_timeout_wait: [missing] -> pass (J0)
  • condvar::nonpoison_wait_timeout_wake: [missing] -> pass (J0)
  • condvar::nonpoison_wait_timeout_while_instant_satisfy: [missing] -> pass (J0)
  • condvar::nonpoison_wait_timeout_while_wait: [missing] -> pass (J0)
  • condvar::nonpoison_wait_timeout_while_wake: [missing] -> pass (J0)
  • condvar::nonpoison_wait_while: [missing] -> pass (J0)
  • condvar::notify_all: pass -> [missing] (J0)
  • condvar::notify_one: pass -> [missing] (J0)
  • condvar::poison_notify_all: [missing] -> pass (J0)
  • condvar::poison_notify_one: [missing] -> pass (J0)
  • condvar::poison_smoke: [missing] -> pass (J0)
  • condvar::poison_test_mutex_arc_condvar: [missing] -> pass (J0)
  • condvar::poison_wait_timeout_wait: [missing] -> pass (J0)
  • condvar::poison_wait_timeout_wake: [missing] -> pass (J0)
  • condvar::poison_wait_timeout_while_instant_satisfy: [missing] -> pass (J0)
  • condvar::poison_wait_timeout_while_wait: [missing] -> pass (J0)
  • condvar::poison_wait_timeout_while_wake: [missing] -> pass (J0)
  • condvar::poison_wait_while: [missing] -> pass (J0)
  • condvar::smoke: pass -> [missing] (J0)
  • condvar::wait_timeout_wait: pass -> [missing] (J0)
  • condvar::wait_timeout_wake: pass -> [missing] (J0)
  • condvar::wait_timeout_while_instant_satisfy: pass -> [missing] (J0)
  • condvar::wait_timeout_while_wait: pass -> [missing] (J0)
  • condvar::wait_timeout_while_wake: pass -> [missing] (J0)
  • condvar::wait_while: pass -> [missing] (J0)
  • mutex::test_mutex_arc_condvar: pass -> [missing] (J0)
  • time::from_nanos_u128_overflow: [missing] -> pass (J1)

Additionally, 1159 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 e95db591a4550e28ad92660b753ad85b89271882 --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-aarch64-linux: 6068.7s -> 8424.2s (38.8%)
  2. dist-aarch64-apple: 6090.0s -> 8111.7s (33.2%)
  3. aarch64-apple: 5717.4s -> 7528.2s (31.7%)
  4. pr-check-1: 1679.4s -> 1374.3s (-18.2%)
  5. i686-gnu-1: 8850.3s -> 7467.4s (-15.6%)
  6. x86_64-rust-for-linux: 2985.7s -> 2564.9s (-14.1%)
  7. i686-gnu-nopt-1: 8241.9s -> 7247.2s (-12.1%)
  8. i686-gnu-2: 6167.7s -> 5471.2s (-11.3%)
  9. aarch64-gnu-debug: 4841.8s -> 4335.4s (-10.5%)
  10. x86_64-gnu-llvm-19: 2783.8s -> 2502.5s (-10.1%)
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.

@Zalathar Zalathar deleted the rollup-urbmv0t branch August 30, 2025 14:41
@rust-timer
Copy link
Collaborator

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

Results (primary 0.9%, secondary 1.4%)

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

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

Cycles

Results (secondary 0.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)
5.7% [5.7%, 5.7%] 1
Improvements ✅
(primary)
- - 0
Improvements ✅
(secondary)
-4.3% [-4.3%, -4.3%] 1
All ❌✅ (primary) - - 0

Binary size

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

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

Bootstrap: 465.855s -> 464.738s (-0.24%)
Artifact size: 388.54 MiB -> 388.52 MiB (-0.00%)

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. 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