From f92b4a71e839c748e944c051a73d387a676fd788 Mon Sep 17 00:00:00 2001 From: Taiki Endo Date: Thu, 6 Feb 2025 03:08:25 +0900 Subject: [PATCH] Replace rand dev-dependency with fastrand --- Cargo.toml | 1 - crossbeam-channel/Cargo.toml | 2 +- crossbeam-channel/tests/array.rs | 7 +++---- crossbeam-channel/tests/list.rs | 7 +++---- crossbeam-channel/tests/zero.rs | 5 ++--- crossbeam-deque/Cargo.toml | 2 +- crossbeam-deque/tests/fifo.rs | 11 +++++------ crossbeam-deque/tests/injector.rs | 11 +++++------ crossbeam-deque/tests/lifo.rs | 11 +++++------ crossbeam-epoch/Cargo.toml | 2 +- crossbeam-epoch/examples/sanitize.rs | 9 ++++----- crossbeam-queue/Cargo.toml | 2 +- crossbeam-queue/tests/array_queue.rs | 7 +++---- crossbeam-queue/tests/seg_queue.rs | 7 +++---- crossbeam-skiplist/Cargo.toml | 2 +- crossbeam-utils/Cargo.toml | 2 +- crossbeam-utils/tests/sharded_lock.rs | 5 ++--- 17 files changed, 41 insertions(+), 52 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index e19e10d6b..f097e0fab 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -41,7 +41,6 @@ crossbeam-queue = { version = "0.3.10", path = "crossbeam-queue", default-featur crossbeam-utils = { version = "0.8.18", path = "crossbeam-utils", default-features = false, features = ["atomic"] } [dev-dependencies] -rand = "0.8" [lints] workspace = true diff --git a/crossbeam-channel/Cargo.toml b/crossbeam-channel/Cargo.toml index d03293956..2ad4c46ed 100644 --- a/crossbeam-channel/Cargo.toml +++ b/crossbeam-channel/Cargo.toml @@ -27,8 +27,8 @@ std = ["crossbeam-utils/std"] crossbeam-utils = { version = "0.8.18", path = "../crossbeam-utils", default-features = false, features = ["atomic"] } [dev-dependencies] +fastrand = "2" num_cpus = "1.13.0" -rand = "0.8" signal-hook = "0.3" [lints] diff --git a/crossbeam-channel/tests/array.rs b/crossbeam-channel/tests/array.rs index 486f56a78..02de669fc 100644 --- a/crossbeam-channel/tests/array.rs +++ b/crossbeam-channel/tests/array.rs @@ -10,7 +10,6 @@ use crossbeam_channel::{bounded, select, Receiver}; use crossbeam_channel::{RecvError, RecvTimeoutError, TryRecvError}; use crossbeam_channel::{SendError, SendTimeoutError, TrySendError}; use crossbeam_utils::thread::scope; -use rand::{thread_rng, Rng}; fn ms(ms: u64) -> Duration { Duration::from_millis(ms) @@ -519,11 +518,11 @@ fn drops() { } } - let mut rng = thread_rng(); + let mut rng = fastrand::Rng::new(); for _ in 0..RUNS { - let steps = rng.gen_range(0..STEPS); - let additional = rng.gen_range(0..50); + let steps = rng.usize(0..STEPS); + let additional = rng.usize(0..50); DROPS.store(0, Ordering::SeqCst); let (s, r) = bounded::(50); diff --git a/crossbeam-channel/tests/list.rs b/crossbeam-channel/tests/list.rs index beabac8f2..91ef083f1 100644 --- a/crossbeam-channel/tests/list.rs +++ b/crossbeam-channel/tests/list.rs @@ -10,7 +10,6 @@ use crossbeam_channel::{select, unbounded, Receiver}; use crossbeam_channel::{RecvError, RecvTimeoutError, TryRecvError}; use crossbeam_channel::{SendError, SendTimeoutError, TrySendError}; use crossbeam_utils::thread::scope; -use rand::{thread_rng, Rng}; fn ms(ms: u64) -> Duration { Duration::from_millis(ms) @@ -421,11 +420,11 @@ fn drops() { } } - let mut rng = thread_rng(); + let mut rng = fastrand::Rng::new(); for _ in 0..RUNS { - let steps = rng.gen_range(0..STEPS); - let additional = rng.gen_range(0..STEPS / 10); + let steps = rng.usize(0..STEPS); + let additional = rng.usize(0..STEPS / 10); DROPS.store(0, Ordering::SeqCst); let (s, r) = unbounded::(); diff --git a/crossbeam-channel/tests/zero.rs b/crossbeam-channel/tests/zero.rs index 74c9a3e10..d3315b8b3 100644 --- a/crossbeam-channel/tests/zero.rs +++ b/crossbeam-channel/tests/zero.rs @@ -10,7 +10,6 @@ use crossbeam_channel::{bounded, select, Receiver}; use crossbeam_channel::{RecvError, RecvTimeoutError, TryRecvError}; use crossbeam_channel::{SendError, SendTimeoutError, TrySendError}; use crossbeam_utils::thread::scope; -use rand::{thread_rng, Rng}; fn ms(ms: u64) -> Duration { Duration::from_millis(ms) @@ -420,10 +419,10 @@ fn drops() { } } - let mut rng = thread_rng(); + let mut rng = fastrand::Rng::new(); for _ in 0..RUNS { - let steps = rng.gen_range(0..STEPS); + let steps = rng.usize(0..STEPS); DROPS.store(0, Ordering::SeqCst); let (s, r) = bounded::(0); diff --git a/crossbeam-deque/Cargo.toml b/crossbeam-deque/Cargo.toml index 3c6d44639..4c3b17c98 100644 --- a/crossbeam-deque/Cargo.toml +++ b/crossbeam-deque/Cargo.toml @@ -28,7 +28,7 @@ crossbeam-epoch = { version = "0.9.17", path = "../crossbeam-epoch", default-fea crossbeam-utils = { version = "0.8.18", path = "../crossbeam-utils", default-features = false } [dev-dependencies] -rand = "0.8" +fastrand = "2" [lints] workspace = true diff --git a/crossbeam-deque/tests/fifo.rs b/crossbeam-deque/tests/fifo.rs index f98737b58..f4e44e7d7 100644 --- a/crossbeam-deque/tests/fifo.rs +++ b/crossbeam-deque/tests/fifo.rs @@ -5,7 +5,6 @@ use std::sync::{Arc, Mutex}; use crossbeam_deque::Steal::{Empty, Success}; use crossbeam_deque::Worker; use crossbeam_utils::thread::scope; -use rand::Rng; #[test] fn smoke() { @@ -183,10 +182,10 @@ fn stress() { }); } - let mut rng = rand::thread_rng(); + let mut rng = fastrand::Rng::new(); let mut expected = 0; while expected < COUNT { - if rng.gen_range(0..3) == 0 { + if rng.u8(0..3) == 0 { while w.pop().is_some() { hits.fetch_add(1, SeqCst); } @@ -244,11 +243,11 @@ fn no_starvation() { }); } - let mut rng = rand::thread_rng(); + let mut rng = fastrand::Rng::new(); let mut my_hits = 0; loop { - for i in 0..rng.gen_range(0..COUNT) { - if rng.gen_range(0..3) == 0 && my_hits == 0 { + for i in 0..rng.usize(0..COUNT) { + if rng.u8(0..3) == 0 && my_hits == 0 { while w.pop().is_some() { my_hits += 1; } diff --git a/crossbeam-deque/tests/injector.rs b/crossbeam-deque/tests/injector.rs index 5f6c3e98e..982fc7752 100644 --- a/crossbeam-deque/tests/injector.rs +++ b/crossbeam-deque/tests/injector.rs @@ -5,7 +5,6 @@ use std::sync::{Arc, Mutex}; use crossbeam_deque::Steal::{Empty, Success}; use crossbeam_deque::{Injector, Worker}; use crossbeam_utils::thread::scope; -use rand::Rng; #[test] fn smoke() { @@ -201,10 +200,10 @@ fn stress() { }); } - let mut rng = rand::thread_rng(); + let mut rng = fastrand::Rng::new(); let mut expected = 0; while expected < COUNT { - if rng.gen_range(0..3) == 0 { + if rng.u8(0..3) == 0 { while let Success(_) = q.steal() { hits.fetch_add(1, SeqCst); } @@ -262,11 +261,11 @@ fn no_starvation() { }); } - let mut rng = rand::thread_rng(); + let mut rng = fastrand::Rng::new(); let mut my_hits = 0; loop { - for i in 0..rng.gen_range(0..COUNT) { - if rng.gen_range(0..3) == 0 && my_hits == 0 { + for i in 0..rng.usize(0..COUNT) { + if rng.u8(0..3) == 0 && my_hits == 0 { while let Success(_) = q.steal() { my_hits += 1; } diff --git a/crossbeam-deque/tests/lifo.rs b/crossbeam-deque/tests/lifo.rs index c1a65cd2e..139214439 100644 --- a/crossbeam-deque/tests/lifo.rs +++ b/crossbeam-deque/tests/lifo.rs @@ -5,7 +5,6 @@ use std::sync::{Arc, Mutex}; use crossbeam_deque::Steal::{Empty, Success}; use crossbeam_deque::Worker; use crossbeam_utils::thread::scope; -use rand::Rng; #[test] fn smoke() { @@ -185,10 +184,10 @@ fn stress() { }); } - let mut rng = rand::thread_rng(); + let mut rng = fastrand::Rng::new(); let mut expected = 0; while expected < COUNT { - if rng.gen_range(0..3) == 0 { + if rng.u8(0..3) == 0 { while w.pop().is_some() { hits.fetch_add(1, SeqCst); } @@ -246,11 +245,11 @@ fn no_starvation() { }); } - let mut rng = rand::thread_rng(); + let mut rng = fastrand::Rng::new(); let mut my_hits = 0; loop { - for i in 0..rng.gen_range(0..COUNT) { - if rng.gen_range(0..3) == 0 && my_hits == 0 { + for i in 0..rng.usize(0..COUNT) { + if rng.u8(0..3) == 0 && my_hits == 0 { while w.pop().is_some() { my_hits += 1; } diff --git a/crossbeam-epoch/Cargo.toml b/crossbeam-epoch/Cargo.toml index 918215fa7..5d64614ed 100644 --- a/crossbeam-epoch/Cargo.toml +++ b/crossbeam-epoch/Cargo.toml @@ -44,7 +44,7 @@ crossbeam-utils = { version = "0.8.18", path = "../crossbeam-utils", default-fea loom-crate = { package = "loom", version = "0.7.1", optional = true } [dev-dependencies] -rand = "0.8" +fastrand = "2" [lints] workspace = true diff --git a/crossbeam-epoch/examples/sanitize.rs b/crossbeam-epoch/examples/sanitize.rs index 4109c34a8..a3f1e331a 100644 --- a/crossbeam-epoch/examples/sanitize.rs +++ b/crossbeam-epoch/examples/sanitize.rs @@ -5,16 +5,15 @@ use std::thread; use std::time::{Duration, Instant}; use crossbeam_epoch::{self as epoch, Atomic, Collector, LocalHandle, Owned, Shared}; -use rand::Rng; fn worker(a: Arc>, handle: LocalHandle) -> usize { - let mut rng = rand::thread_rng(); + let mut rng = fastrand::Rng::new(); let mut sum = 0; - if rng.gen() { + if rng.bool() { thread::sleep(Duration::from_millis(1)); } - let timeout = Duration::from_millis(rng.gen_range(0..10)); + let timeout = Duration::from_millis(rng.u64(0..10)); let now = Instant::now(); while now.elapsed() < timeout { @@ -22,7 +21,7 @@ fn worker(a: Arc>, handle: LocalHandle) -> usize { let guard = &handle.pin(); guard.flush(); - let val = if rng.gen() { + let val = if rng.bool() { let p = a.swap(Owned::new(AtomicUsize::new(sum)), AcqRel, guard); unsafe { guard.defer_destroy(p); diff --git a/crossbeam-queue/Cargo.toml b/crossbeam-queue/Cargo.toml index b3d268f13..853542c1f 100644 --- a/crossbeam-queue/Cargo.toml +++ b/crossbeam-queue/Cargo.toml @@ -31,7 +31,7 @@ alloc = [] crossbeam-utils = { version = "0.8.18", path = "../crossbeam-utils", default-features = false } [dev-dependencies] -rand = "0.8" +fastrand = "2" [lints] workspace = true diff --git a/crossbeam-queue/tests/array_queue.rs b/crossbeam-queue/tests/array_queue.rs index b9d4e5fd4..a07a208d4 100644 --- a/crossbeam-queue/tests/array_queue.rs +++ b/crossbeam-queue/tests/array_queue.rs @@ -2,7 +2,6 @@ use std::sync::atomic::{AtomicUsize, Ordering}; use crossbeam_queue::ArrayQueue; use crossbeam_utils::thread::scope; -use rand::{thread_rng, Rng}; #[test] fn smoke() { @@ -295,11 +294,11 @@ fn drops() { } } - let mut rng = thread_rng(); + let mut rng = fastrand::Rng::new(); for _ in 0..runs { - let steps = rng.gen_range(0..steps); - let additional = rng.gen_range(0..additional); + let steps = rng.usize(0..steps); + let additional = rng.usize(0..additional); DROPS.store(0, Ordering::SeqCst); let q = ArrayQueue::new(50); diff --git a/crossbeam-queue/tests/seg_queue.rs b/crossbeam-queue/tests/seg_queue.rs index d2ad1e472..27e49a2c1 100644 --- a/crossbeam-queue/tests/seg_queue.rs +++ b/crossbeam-queue/tests/seg_queue.rs @@ -2,7 +2,6 @@ use std::sync::atomic::{AtomicUsize, Ordering}; use crossbeam_queue::SegQueue; use crossbeam_utils::thread::scope; -use rand::{thread_rng, Rng}; #[test] fn smoke() { @@ -138,11 +137,11 @@ fn drops() { } } - let mut rng = thread_rng(); + let mut rng = fastrand::Rng::new(); for _ in 0..runs { - let steps = rng.gen_range(0..steps); - let additional = rng.gen_range(0..additional); + let steps = rng.usize(0..steps); + let additional = rng.usize(0..additional); DROPS.store(0, Ordering::SeqCst); let q = SegQueue::new(); diff --git a/crossbeam-skiplist/Cargo.toml b/crossbeam-skiplist/Cargo.toml index 75a0df46b..a341747fa 100644 --- a/crossbeam-skiplist/Cargo.toml +++ b/crossbeam-skiplist/Cargo.toml @@ -32,7 +32,7 @@ crossbeam-epoch = { version = "0.9.17", path = "../crossbeam-epoch", default-fea crossbeam-utils = { version = "0.8.18", path = "../crossbeam-utils", default-features = false } [dev-dependencies] -rand = "0.8" +fastrand = "2" [lints] workspace = true diff --git a/crossbeam-utils/Cargo.toml b/crossbeam-utils/Cargo.toml index 6e9b52f4c..f9b334c22 100644 --- a/crossbeam-utils/Cargo.toml +++ b/crossbeam-utils/Cargo.toml @@ -39,7 +39,7 @@ atomic-maybe-uninit = { version = "0.3.4", optional = true } loom = { version = "0.7.1", optional = true } [dev-dependencies] -rand = "0.8" +fastrand = "2" [lints] workspace = true diff --git a/crossbeam-utils/tests/sharded_lock.rs b/crossbeam-utils/tests/sharded_lock.rs index 488a7be8f..d791faa8e 100644 --- a/crossbeam-utils/tests/sharded_lock.rs +++ b/crossbeam-utils/tests/sharded_lock.rs @@ -4,7 +4,6 @@ use std::sync::{Arc, TryLockError}; use std::thread; use crossbeam_utils::sync::ShardedLock; -use rand::Rng; #[derive(Eq, PartialEq, Debug)] struct NonCopy(i32); @@ -33,9 +32,9 @@ fn frob() { let tx = tx.clone(); let r = r.clone(); thread::spawn(move || { - let mut rng = rand::thread_rng(); + let mut rng = fastrand::Rng::new(); for _ in 0..M { - if rng.gen_bool(1.0 / (N as f64)) { + if rng.u32(0..N) == 0 { drop(r.write().unwrap()); } else { drop(r.read().unwrap());