library: Update rand to 0.9.0

This commit is contained in:
Eric Huss 2025-02-13 12:20:55 -08:00
parent ef34064679
commit b7c975b22e
17 changed files with 132 additions and 65 deletions

View File

@ -215,6 +215,15 @@ dependencies = [
"unwind", "unwind",
] ]
[[package]]
name = "proc-macro2"
version = "1.0.93"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "60946a68e5f9d28b0dc1c21bb8a97ee7d018a8b322fa57838ba31cc878e22d99"
dependencies = [
"unicode-ident",
]
[[package]] [[package]]
name = "proc_macro" name = "proc_macro"
version = "0.0.0" version = "0.0.0"
@ -230,6 +239,15 @@ dependencies = [
"cc", "cc",
] ]
[[package]]
name = "quote"
version = "1.0.38"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0e4dccaaaf89514f546c693ddc140f729f958c247918a13380cccc6078391acc"
dependencies = [
"proc-macro2",
]
[[package]] [[package]]
name = "r-efi" name = "r-efi"
version = "4.5.0" version = "4.5.0"
@ -253,24 +271,28 @@ dependencies = [
[[package]] [[package]]
name = "rand" name = "rand"
version = "0.8.5" version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "34af8d1a0e25924bc5b7c43c079c942339d8f0a8b57c39049bef581b46327404" checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94"
dependencies = [ dependencies = [
"rand_core", "rand_core",
"zerocopy",
] ]
[[package]] [[package]]
name = "rand_core" name = "rand_core"
version = "0.6.4" version = "0.9.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c" checksum = "b08f3c9802962f7e1b25113931d94f43ed9725bebc59db9d0c3e9a23b67e15ff"
dependencies = [
"zerocopy",
]
[[package]] [[package]]
name = "rand_xorshift" name = "rand_xorshift"
version = "0.3.0" version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d25bf25ec5ae4a3f1b92f929810509a2f53d7dca2f50b794ff57e3face536c8f" checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a"
dependencies = [ dependencies = [
"rand_core", "rand_core",
] ]
@ -352,6 +374,17 @@ dependencies = [
"rustc-std-workspace-core", "rustc-std-workspace-core",
] ]
[[package]]
name = "syn"
version = "2.0.98"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "36147f1a48ae0ec2b5b3bc5b537d267457555a10dc06f3dbc8cb11ba3006d3b1"
dependencies = [
"proc-macro2",
"quote",
"unicode-ident",
]
[[package]] [[package]]
name = "sysroot" name = "sysroot"
version = "0.0.0" version = "0.0.0"
@ -372,6 +405,12 @@ dependencies = [
"std", "std",
] ]
[[package]]
name = "unicode-ident"
version = "1.0.16"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a210d160f08b701c8721ba1c726c11662f877ea6b7094007e1ca9a1041945034"
[[package]] [[package]]
name = "unicode-width" name = "unicode-width"
version = "0.1.14" version = "0.1.14"
@ -492,3 +531,23 @@ name = "windows_x86_64_msvc"
version = "0.52.6" version = "0.52.6"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec"
[[package]]
name = "zerocopy"
version = "0.8.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "aa91407dacce3a68c56de03abe2760159582b846c6a4acd2f456618087f12713"
dependencies = [
"zerocopy-derive",
]
[[package]]
name = "zerocopy-derive"
version = "0.8.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "06718a168365cad3d5ff0bb133aad346959a2074bd4a85c121255a11304a8626"
dependencies = [
"proc-macro2",
"quote",
"syn",
]

View File

@ -13,8 +13,8 @@ core = { path = "../core" }
compiler_builtins = { version = "=0.1.146", features = ['rustc-dep-of-std'] } compiler_builtins = { version = "=0.1.146", features = ['rustc-dep-of-std'] }
[dev-dependencies] [dev-dependencies]
rand = { version = "0.8.5", default-features = false, features = ["alloc"] } rand = { version = "0.9.0", default-features = false, features = ["alloc"] }
rand_xorshift = "0.3.0" rand_xorshift = "0.4.0"
[[test]] [[test]]
name = "alloctests" name = "alloctests"

View File

@ -9,19 +9,19 @@ macro_rules! map_insert_rand_bench {
($name: ident, $n: expr, $map: ident) => { ($name: ident, $n: expr, $map: ident) => {
#[bench] #[bench]
pub fn $name(b: &mut Bencher) { pub fn $name(b: &mut Bencher) {
let n: usize = $n; let n: u32 = $n;
let mut map = $map::new(); let mut map = $map::new();
// setup // setup
let mut rng = crate::bench_rng(); let mut rng = crate::bench_rng();
for _ in 0..n { for _ in 0..n {
let i = rng.gen::<usize>() % n; let i = rng.random::<u32>() % n;
map.insert(i, i); map.insert(i, i);
} }
// measure // measure
b.iter(|| { b.iter(|| {
let k = rng.gen::<usize>() % n; let k = rng.random::<u32>() % n;
map.insert(k, k); map.insert(k, k);
map.remove(&k); map.remove(&k);
}); });
@ -57,13 +57,13 @@ macro_rules! map_from_iter_rand_bench {
($name: ident, $n: expr, $map: ident) => { ($name: ident, $n: expr, $map: ident) => {
#[bench] #[bench]
pub fn $name(b: &mut Bencher) { pub fn $name(b: &mut Bencher) {
let n: usize = $n; let n: u32 = $n;
// setup // setup
let mut rng = crate::bench_rng(); let mut rng = crate::bench_rng();
let mut vec = Vec::with_capacity(n); let mut vec = Vec::with_capacity(n as usize);
for _ in 0..n { for _ in 0..n {
let i = rng.gen::<usize>() % n; let i = rng.random::<u32>() % n;
vec.push((i, i)); vec.push((i, i));
} }
@ -102,11 +102,11 @@ macro_rules! map_find_rand_bench {
#[bench] #[bench]
pub fn $name(b: &mut Bencher) { pub fn $name(b: &mut Bencher) {
let mut map = $map::new(); let mut map = $map::new();
let n: usize = $n; let n: u32 = $n;
// setup // setup
let mut rng = crate::bench_rng(); let mut rng = crate::bench_rng();
let mut keys: Vec<_> = (0..n).map(|_| rng.gen::<usize>() % n).collect(); let mut keys: Vec<_> = (0..n).map(|_| rng.random::<u32>() % n).collect();
for &k in &keys { for &k in &keys {
map.insert(k, k); map.insert(k, k);
@ -115,9 +115,9 @@ macro_rules! map_find_rand_bench {
keys.shuffle(&mut rng); keys.shuffle(&mut rng);
// measure // measure
let mut i = 0; let mut i = 0u32;
b.iter(|| { b.iter(|| {
let t = map.get(&keys[i]); let t = map.get(&keys[i as usize]);
i = (i + 1) % n; i = (i + 1) % n;
black_box(t); black_box(t);
}) })
@ -171,7 +171,7 @@ fn bench_iteration(b: &mut Bencher, size: i32) {
let mut rng = crate::bench_rng(); let mut rng = crate::bench_rng();
for _ in 0..size { for _ in 0..size {
map.insert(rng.gen(), rng.gen()); map.insert(rng.random(), rng.random());
} }
b.iter(|| { b.iter(|| {
@ -201,7 +201,7 @@ fn bench_iteration_mut(b: &mut Bencher, size: i32) {
let mut rng = crate::bench_rng(); let mut rng = crate::bench_rng();
for _ in 0..size { for _ in 0..size {
map.insert(rng.gen(), rng.gen()); map.insert(rng.random(), rng.random());
} }
b.iter(|| { b.iter(|| {

View File

@ -3,13 +3,13 @@ use std::collections::BTreeSet;
use rand::Rng; use rand::Rng;
use test::Bencher; use test::Bencher;
fn random(n: usize) -> BTreeSet<usize> { fn random(n: u32) -> BTreeSet<u32> {
let mut rng = crate::bench_rng(); let mut rng = crate::bench_rng();
let mut set = BTreeSet::new(); let mut set = BTreeSet::new();
while set.len() < n { while set.len() < n as usize {
set.insert(rng.gen()); set.insert(rng.random());
} }
assert_eq!(set.len(), n); assert_eq!(set.len(), n as usize);
set set
} }

View File

@ -1,7 +1,7 @@
use std::{mem, ptr}; use std::{mem, ptr};
use rand::Rng; use rand::Rng;
use rand::distributions::{Alphanumeric, DistString, Standard}; use rand::distr::{Alphanumeric, SampleString, StandardUniform};
use test::{Bencher, black_box}; use test::{Bencher, black_box};
#[bench] #[bench]
@ -156,7 +156,7 @@ fn random_inserts(b: &mut Bencher) {
let mut v = vec![(0, 0); 30]; let mut v = vec![(0, 0); 30];
for _ in 0..100 { for _ in 0..100 {
let l = v.len(); let l = v.len();
v.insert(rng.gen::<usize>() % (l + 1), (1, 1)); v.insert(rng.random::<u32>() as usize % (l + 1), (1, 1));
} }
}) })
} }
@ -168,7 +168,7 @@ fn random_removes(b: &mut Bencher) {
let mut v = vec![(0, 0); 130]; let mut v = vec![(0, 0); 130];
for _ in 0..100 { for _ in 0..100 {
let l = v.len(); let l = v.len();
v.remove(rng.gen::<usize>() % l); v.remove(rng.random::<u32>() as usize % l);
} }
}) })
} }
@ -183,20 +183,20 @@ fn gen_descending(len: usize) -> Vec<u64> {
fn gen_random(len: usize) -> Vec<u64> { fn gen_random(len: usize) -> Vec<u64> {
let mut rng = crate::bench_rng(); let mut rng = crate::bench_rng();
(&mut rng).sample_iter(&Standard).take(len).collect() (&mut rng).sample_iter(&StandardUniform).take(len).collect()
} }
fn gen_random_bytes(len: usize) -> Vec<u8> { fn gen_random_bytes(len: usize) -> Vec<u8> {
let mut rng = crate::bench_rng(); let mut rng = crate::bench_rng();
(&mut rng).sample_iter(&Standard).take(len).collect() (&mut rng).sample_iter(&StandardUniform).take(len).collect()
} }
fn gen_mostly_ascending(len: usize) -> Vec<u64> { fn gen_mostly_ascending(len: usize) -> Vec<u64> {
let mut rng = crate::bench_rng(); let mut rng = crate::bench_rng();
let mut v = gen_ascending(len); let mut v = gen_ascending(len);
for _ in (0usize..).take_while(|x| x * x <= len) { for _ in (0usize..).take_while(|x| x * x <= len) {
let x = rng.gen::<usize>() % len; let x = rng.random::<u32>() as usize % len;
let y = rng.gen::<usize>() % len; let y = rng.random::<u32>() as usize % len;
v.swap(x, y); v.swap(x, y);
} }
v v
@ -206,8 +206,8 @@ fn gen_mostly_descending(len: usize) -> Vec<u64> {
let mut rng = crate::bench_rng(); let mut rng = crate::bench_rng();
let mut v = gen_descending(len); let mut v = gen_descending(len);
for _ in (0usize..).take_while(|x| x * x <= len) { for _ in (0usize..).take_while(|x| x * x <= len) {
let x = rng.gen::<usize>() % len; let x = rng.random::<u32>() as usize % len;
let y = rng.gen::<usize>() % len; let y = rng.random::<u32>() as usize % len;
v.swap(x, y); v.swap(x, y);
} }
v v
@ -217,15 +217,15 @@ fn gen_strings(len: usize) -> Vec<String> {
let mut rng = crate::bench_rng(); let mut rng = crate::bench_rng();
let mut v = vec![]; let mut v = vec![];
for _ in 0..len { for _ in 0..len {
let n = rng.gen::<usize>() % 20 + 1; let n = rng.random::<u32>() % 20 + 1;
v.push(Alphanumeric.sample_string(&mut rng, n)); v.push(Alphanumeric.sample_string(&mut rng, n as usize));
} }
v v
} }
fn gen_big_random(len: usize) -> Vec<[u64; 16]> { fn gen_big_random(len: usize) -> Vec<[u64; 16]> {
let mut rng = crate::bench_rng(); let mut rng = crate::bench_rng();
(&mut rng).sample_iter(&Standard).map(|x| [x; 16]).take(len).collect() (&mut rng).sample_iter(&StandardUniform).map(|x| [x; 16]).take(len).collect()
} }
macro_rules! sort { macro_rules! sort {

View File

@ -1,8 +1,8 @@
use std::env; use std::env;
use std::hash::Hash;
use std::str::FromStr; use std::str::FromStr;
use std::sync::OnceLock; use std::sync::OnceLock;
use rand::distr::Uniform;
use rand::prelude::*; use rand::prelude::*;
use rand_xorshift::XorShiftRng; use rand_xorshift::XorShiftRng;
@ -23,14 +23,14 @@ pub fn random(len: usize) -> Vec<i32> {
pub fn random_uniform<R>(len: usize, range: R) -> Vec<i32> pub fn random_uniform<R>(len: usize, range: R) -> Vec<i32>
where where
R: Into<rand::distributions::Uniform<i32>> + Hash, Uniform<i32>: TryFrom<R, Error: std::fmt::Debug>,
{ {
// :.:.:.:: // :.:.:.::
let mut rng: XorShiftRng = rand::SeedableRng::seed_from_u64(get_or_init_rand_seed()); let mut rng: XorShiftRng = rand::SeedableRng::seed_from_u64(get_or_init_rand_seed());
// Abstracting over ranges in Rust :( // Abstracting over ranges in Rust :(
let dist: rand::distributions::Uniform<i32> = range.into(); let dist = Uniform::try_from(range).unwrap();
(0..len).map(|_| dist.sample(&mut rng)).collect() (0..len).map(|_| dist.sample(&mut rng)).collect()
} }
@ -207,5 +207,5 @@ fn rand_root_seed() -> u64 {
fn random_vec(len: usize) -> Vec<i32> { fn random_vec(len: usize) -> Vec<i32> {
let mut rng: XorShiftRng = rand::SeedableRng::seed_from_u64(get_or_init_rand_seed()); let mut rng: XorShiftRng = rand::SeedableRng::seed_from_u64(get_or_init_rand_seed());
(0..len).map(|_| rng.gen::<i32>()).collect() (0..len).map(|_| rng.random::<i32>()).collect()
} }

View File

@ -80,7 +80,7 @@ impl ZipfDistribution {
loop { loop {
use std::cmp; use std::cmp;
let u: f64 = hnum + rng.gen::<f64>() * (self.h_integral_x1 - hnum); let u: f64 = hnum + rng.random::<f64>() * (self.h_integral_x1 - hnum);
// u is uniformly distributed in (h_integral_x1, h_integral_num_elements] // u is uniformly distributed in (h_integral_x1, h_integral_num_elements]
let x: f64 = ZipfDistribution::h_integral_inv(u, self.exponent); let x: f64 = ZipfDistribution::h_integral_inv(u, self.exponent);
@ -145,7 +145,7 @@ impl ZipfDistribution {
} }
} }
impl rand::distributions::Distribution<usize> for ZipfDistribution { impl rand::distr::Distribution<usize> for ZipfDistribution {
fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> usize { fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> usize {
self.next(rng) self.next(rng)
} }

View File

@ -23,5 +23,5 @@ path = "benches/lib.rs"
test = true test = true
[dev-dependencies] [dev-dependencies]
rand = { version = "0.8.5", default-features = false } rand = { version = "0.9.0", default-features = false }
rand_xorshift = { version = "0.3.0", default-features = false } rand_xorshift = { version = "0.4.0", default-features = false }

View File

@ -21,7 +21,7 @@ macro_rules! int_log10_bench {
/* Exponentially distributed random numbers from the whole range of the type. */ /* Exponentially distributed random numbers from the whole range of the type. */
let numbers: Vec<$t> = (0..256) let numbers: Vec<$t> = (0..256)
.map(|_| { .map(|_| {
let x = rng.gen::<$t>() >> rng.gen_range(0..<$t>::BITS); let x = rng.random::<$t>() >> rng.random_range(0..<$t>::BITS);
if x != 0 { x } else { 1 } if x != 0 { x } else { 1 }
}) })
.collect(); .collect();
@ -38,7 +38,7 @@ macro_rules! int_log10_bench {
/* Exponentially distributed random numbers from the range 0..256. */ /* Exponentially distributed random numbers from the range 0..256. */
let numbers: Vec<$t> = (0..256) let numbers: Vec<$t> = (0..256)
.map(|_| { .map(|_| {
let x = (rng.gen::<u8>() >> rng.gen_range(0..u8::BITS)) as $t; let x = (rng.random::<u8>() >> rng.random_range(0..u8::BITS)) as $t;
if x != 0 { x } else { 1 } if x != 0 { x } else { 1 }
}) })
.collect(); .collect();
@ -65,7 +65,7 @@ macro_rules! int_log_bench {
/* Exponentially distributed random numbers from the whole range of the type. */ /* Exponentially distributed random numbers from the whole range of the type. */
let numbers: Vec<$t> = (0..256) let numbers: Vec<$t> = (0..256)
.map(|_| { .map(|_| {
let x = rng.gen::<$t>() >> rng.gen_range(0..<$t>::BITS); let x = rng.random::<$t>() >> rng.random_range(0..<$t>::BITS);
if x >= 2 { x } else { 2 } if x >= 2 { x } else { 2 }
}) })
.collect(); .collect();
@ -84,7 +84,7 @@ macro_rules! int_log_bench {
/* Exponentially distributed random numbers from the range 0..256. */ /* Exponentially distributed random numbers from the range 0..256. */
let numbers: Vec<$t> = (0..256) let numbers: Vec<$t> = (0..256)
.map(|_| { .map(|_| {
let x = (rng.gen::<u8>() >> rng.gen_range(0..u8::BITS)) as $t; let x = (rng.random::<u8>() >> rng.random_range(0..u8::BITS)) as $t;
if x >= 2 { x } else { 2 } if x >= 2 { x } else { 2 }
}) })
.collect(); .collect();

View File

@ -15,9 +15,9 @@ macro_rules! pow_bench_template {
// reference through black_box outside of the loop. // reference through black_box outside of the loop.
let mut rng = crate::bench_rng(); let mut rng = crate::bench_rng();
let base_array: [IntType; ITERATIONS] = let base_array: [IntType; ITERATIONS] =
core::array::from_fn(|_| rng.gen_range((-MAX_BASE..=MAX_BASE))); core::array::from_fn(|_| rng.random_range((-MAX_BASE..=MAX_BASE)));
let exp_array: [u32; ITERATIONS] = let exp_array: [u32; ITERATIONS] =
core::array::from_fn(|_| rng.gen_range((0..=EXPONENT_MAX))); core::array::from_fn(|_| rng.random_range((0..=EXPONENT_MAX)));
bench.iter(|| { bench.iter(|| {
#[allow(unused, unused_mut)] #[allow(unused, unused_mut)]

View File

@ -20,7 +20,7 @@ macro_rules! int_sqrt_bench {
let mut rng = crate::bench_rng(); let mut rng = crate::bench_rng();
/* Exponentially distributed random numbers from the whole range of the type. */ /* Exponentially distributed random numbers from the whole range of the type. */
let numbers: Vec<$t> = let numbers: Vec<$t> =
(0..256).map(|_| rng.gen::<$t>() >> rng.gen_range(0..<$t>::BITS)).collect(); (0..256).map(|_| rng.random::<$t>() >> rng.random_range(0..<$t>::BITS)).collect();
bench.iter(|| { bench.iter(|| {
for x in &numbers { for x in &numbers {
black_box(black_box(x).isqrt()); black_box(black_box(x).isqrt());
@ -32,8 +32,9 @@ macro_rules! int_sqrt_bench {
fn $random_small(bench: &mut Bencher) { fn $random_small(bench: &mut Bencher) {
let mut rng = crate::bench_rng(); let mut rng = crate::bench_rng();
/* Exponentially distributed random numbers from the range 0..256. */ /* Exponentially distributed random numbers from the range 0..256. */
let numbers: Vec<$t> = let numbers: Vec<$t> = (0..256)
(0..256).map(|_| (rng.gen::<u8>() >> rng.gen_range(0..u8::BITS)) as $t).collect(); .map(|_| (rng.random::<u8>() >> rng.random_range(0..u8::BITS)) as $t)
.collect();
bench.iter(|| { bench.iter(|| {
for x in &numbers { for x in &numbers {
black_box(black_box(x).isqrt()); black_box(black_box(x).isqrt());
@ -45,7 +46,7 @@ macro_rules! int_sqrt_bench {
fn $random_uniform(bench: &mut Bencher) { fn $random_uniform(bench: &mut Bencher) {
let mut rng = crate::bench_rng(); let mut rng = crate::bench_rng();
/* Exponentially distributed random numbers from the whole range of the type. */ /* Exponentially distributed random numbers from the whole range of the type. */
let numbers: Vec<$t> = (0..256).map(|_| rng.gen::<$t>()).collect(); let numbers: Vec<$t> = (0..256).map(|_| rng.random::<$t>()).collect();
bench.iter(|| { bench.iter(|| {
for x in &numbers { for x in &numbers {
black_box(black_box(x).isqrt()); black_box(black_box(x).isqrt());

View File

@ -5,7 +5,7 @@ use core::num::flt2dec::{DecodableFloat, Decoded, FullDecoded, MAX_SIG_DIGITS, d
use std::mem::MaybeUninit; use std::mem::MaybeUninit;
use std::str; use std::str;
use rand::distributions::{Distribution, Uniform}; use rand::distr::{Distribution, Uniform};
pub fn decode_finite<T: DecodableFloat>(v: T) -> Decoded { pub fn decode_finite<T: DecodableFloat>(v: T) -> Decoded {
match decode(v).1 { match decode(v).1 {
@ -85,7 +85,7 @@ where
G: for<'a> FnMut(&Decoded, &'a mut [MaybeUninit<u8>]) -> (&'a [u8], i16), G: for<'a> FnMut(&Decoded, &'a mut [MaybeUninit<u8>]) -> (&'a [u8], i16),
{ {
let mut rng = crate::test_rng(); let mut rng = crate::test_rng();
let f32_range = Uniform::new(0x0000_0001u32, 0x7f80_0000); let f32_range = Uniform::new(0x0000_0001u32, 0x7f80_0000).unwrap();
iterate("f32_random_equivalence_test", k, n, f, g, |_| { iterate("f32_random_equivalence_test", k, n, f, g, |_| {
let x = f32::from_bits(f32_range.sample(&mut rng)); let x = f32::from_bits(f32_range.sample(&mut rng));
decode_finite(x) decode_finite(x)
@ -98,7 +98,7 @@ where
G: for<'a> FnMut(&Decoded, &'a mut [MaybeUninit<u8>]) -> (&'a [u8], i16), G: for<'a> FnMut(&Decoded, &'a mut [MaybeUninit<u8>]) -> (&'a [u8], i16),
{ {
let mut rng = crate::test_rng(); let mut rng = crate::test_rng();
let f64_range = Uniform::new(0x0000_0000_0000_0001u64, 0x7ff0_0000_0000_0000); let f64_range = Uniform::new(0x0000_0000_0000_0001u64, 0x7ff0_0000_0000_0000).unwrap();
iterate("f64_random_equivalence_test", k, n, f, g, |_| { iterate("f64_random_equivalence_test", k, n, f, g, |_| {
let x = f64::from_bits(f64_range.sample(&mut rng)); let x = f64::from_bits(f64_range.sample(&mut rng));
decode_finite(x) decode_finite(x)

View File

@ -5,6 +5,8 @@ use core::num::NonZero;
use core::ops::{Range, RangeInclusive}; use core::ops::{Range, RangeInclusive};
use core::slice; use core::slice;
use rand::seq::IndexedRandom;
#[test] #[test]
fn test_position() { fn test_position() {
let b = [1, 2, 3, 5, 5]; let b = [1, 2, 3, 5, 5];
@ -1291,7 +1293,7 @@ fn test_iter_ref_consistency() {
fn test<T: Copy + Debug + PartialEq>(x: T) { fn test<T: Copy + Debug + PartialEq>(x: T) {
let v: &[T] = &[x, x, x]; let v: &[T] = &[x, x, x];
let v_ptrs: [*const T; 3] = match v { let v_ptrs: [*const T; 3] = match v {
[ref v1, ref v2, ref v3] => [v1 as *const _, v2 as *const _, v3 as *const _], [v1, v2, v3] => [v1 as *const _, v2 as *const _, v3 as *const _],
_ => unreachable!(), _ => unreachable!(),
}; };
let len = v.len(); let len = v.len();
@ -1346,7 +1348,7 @@ fn test_iter_ref_consistency() {
fn test_mut<T: Copy + Debug + PartialEq>(x: T) { fn test_mut<T: Copy + Debug + PartialEq>(x: T) {
let v: &mut [T] = &mut [x, x, x]; let v: &mut [T] = &mut [x, x, x];
let v_ptrs: [*mut T; 3] = match v { let v_ptrs: [*mut T; 3] = match v {
[ref v1, ref v2, ref v3] => { &mut [ref v1, ref v2, ref v3] => {
[v1 as *const _ as *mut _, v2 as *const _ as *mut _, v3 as *const _ as *mut _] [v1 as *const _ as *mut _, v2 as *const _ as *mut _, v3 as *const _ as *mut _]
} }
_ => unreachable!(), _ => unreachable!(),
@ -1808,7 +1810,6 @@ fn select_nth_unstable() {
use core::cmp::Ordering::{Equal, Greater, Less}; use core::cmp::Ordering::{Equal, Greater, Less};
use rand::Rng; use rand::Rng;
use rand::seq::SliceRandom;
let mut rng = crate::test_rng(); let mut rng = crate::test_rng();
@ -1818,7 +1819,7 @@ fn select_nth_unstable() {
for &modulus in &[5, 10, 1000] { for &modulus in &[5, 10, 1000] {
for _ in 0..10 { for _ in 0..10 {
for i in 0..len { for i in 0..len {
orig[i] = rng.gen::<i32>() % modulus; orig[i] = rng.random::<i32>() % modulus;
} }
let v_sorted = { let v_sorted = {

View File

@ -61,8 +61,8 @@ object = { version = "0.36.0", default-features = false, optional = true, featur
path = "../windows_targets" path = "../windows_targets"
[dev-dependencies] [dev-dependencies]
rand = { version = "0.8.5", default-features = false, features = ["alloc"] } rand = { version = "0.9.0", default-features = false, features = ["alloc"] }
rand_xorshift = "0.3.0" rand_xorshift = "0.4.0"
[target.'cfg(any(all(target_family = "wasm", target_os = "unknown"), target_os = "xous", all(target_vendor = "fortanix", target_env = "sgx")))'.dependencies] [target.'cfg(any(all(target_family = "wasm", target_os = "unknown"), target_os = "xous", all(target_vendor = "fortanix", target_env = "sgx")))'.dependencies]
dlmalloc = { version = "0.2.4", features = ['rustc-dep-of-std'] } dlmalloc = { version = "0.2.4", features = ['rustc-dep-of-std'] }

View File

@ -4,7 +4,7 @@
use std::env::*; use std::env::*;
use std::ffi::{OsStr, OsString}; use std::ffi::{OsStr, OsString};
use rand::distributions::{Alphanumeric, DistString}; use rand::distr::{Alphanumeric, SampleString};
mod common; mod common;
use std::thread; use std::thread;

View File

@ -59,7 +59,7 @@ fn frob() {
thread::spawn(move || { thread::spawn(move || {
let mut rng = crate::common::test_rng(); let mut rng = crate::common::test_rng();
for _ in 0..M { for _ in 0..M {
if rng.gen_bool(1.0 / (N as f64)) { if rng.random_bool(1.0 / (N as f64)) {
drop(r.write().unwrap()); drop(r.write().unwrap());
} else { } else {
drop(r.read().unwrap()); drop(r.read().unwrap());

View File

@ -476,6 +476,8 @@ const PERMITTED_STDLIB_DEPENDENCIES: &[&str] = &[
"memchr", "memchr",
"miniz_oxide", "miniz_oxide",
"object", "object",
"proc-macro2",
"quote",
"r-efi", "r-efi",
"r-efi-alloc", "r-efi-alloc",
"rand", "rand",
@ -483,6 +485,8 @@ const PERMITTED_STDLIB_DEPENDENCIES: &[&str] = &[
"rand_xorshift", "rand_xorshift",
"rustc-demangle", "rustc-demangle",
"shlex", "shlex",
"syn",
"unicode-ident",
"unicode-width", "unicode-width",
"unwinding", "unwinding",
"wasi", "wasi",
@ -496,6 +500,8 @@ const PERMITTED_STDLIB_DEPENDENCIES: &[&str] = &[
"windows_x86_64_gnu", "windows_x86_64_gnu",
"windows_x86_64_gnullvm", "windows_x86_64_gnullvm",
"windows_x86_64_msvc", "windows_x86_64_msvc",
"zerocopy",
"zerocopy-derive",
// tidy-alphabetical-end // tidy-alphabetical-end
]; ];