Update rand and rand_chacha to 0.9 (#15463)

# Description
As description, I think it's worth to move forward to update rand and
rand_chacha to 0.9.

# User-Facing Changes
Hopefully none

# Tests + Formatting
NaN

# After Submitting
NaN
This commit is contained in:
Wind 2025-04-01 20:15:39 +08:00 committed by GitHub
parent 6c0b65b570
commit f39e5b3f37
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
10 changed files with 37 additions and 44 deletions

4
Cargo.lock generated
View File

@ -3702,8 +3702,8 @@ dependencies = [
"print-positions",
"procfs",
"quick-xml 0.37.1",
"rand 0.8.5",
"rand_chacha 0.3.1",
"rand 0.9.0",
"rand_chacha 0.9.0",
"rayon",
"rmp",
"roxmltree",

View File

@ -135,9 +135,9 @@ quick-xml = "0.37.0"
quickcheck = "1.0"
quickcheck_macros = "1.0"
quote = "1.0"
rand = "0.8"
rand = "0.9"
getrandom = "0.2" # pick same version that rand requires
rand_chacha = "0.3.1"
rand_chacha = "0.9"
ratatui = "0.29"
rayon = "1.10"
reedline = "0.39.0"

View File

@ -1,5 +1,5 @@
use nu_engine::command_prelude::*;
use rand::{prelude::SliceRandom, thread_rng};
use rand::{prelude::SliceRandom, rng};
#[derive(Clone)]
pub struct Shuffle;
@ -31,7 +31,7 @@ impl Command for Shuffle {
) -> Result<PipelineData, ShellError> {
let metadata = input.metadata();
let mut values = input.into_iter_strict(call.head)?.collect::<Vec<_>>();
values.shuffle(&mut thread_rng());
values.shuffle(&mut rng());
let iter = values.into_iter();
Ok(iter.into_pipeline_data_with_metadata(
call.head,

View File

@ -1,6 +1,5 @@
use nu_engine::command_prelude::*;
use rand::prelude::{thread_rng, Rng};
use rand::random_bool;
#[derive(Clone)]
pub struct RandomBool;
@ -77,8 +76,7 @@ fn bool(
}
}
let mut rng = thread_rng();
let bool_result: bool = rng.gen_bool(probability);
let bool_result: bool = random_bool(probability);
Ok(PipelineData::Value(Value::bool(bool_result, span), None))
}

View File

@ -1,8 +1,8 @@
use nu_engine::command_prelude::*;
use nu_protocol::Signals;
use rand::{
distributions::{Alphanumeric, Standard},
thread_rng, Rng,
distr::{Alphanumeric, StandardUniform},
rng, Rng,
};
pub(super) enum RandomDistribution {
@ -31,9 +31,9 @@ pub(super) fn random_byte_stream(
let bytes_to_write = std::cmp::min(remaining_bytes, OUTPUT_CHUNK_SIZE);
let rng = thread_rng();
let rng = rng();
let byte_iter: Box<dyn Iterator<Item = u8>> = match distribution {
RandomDistribution::Binary => Box::new(rng.sample_iter(Standard)),
RandomDistribution::Binary => Box::new(rng.sample_iter(StandardUniform)),
RandomDistribution::Alphanumeric => Box::new(rng.sample_iter(Alphanumeric)),
};
out.extend(byte_iter.take(bytes_to_write));

View File

@ -1,6 +1,6 @@
use nu_engine::command_prelude::*;
use nu_protocol::ListStream;
use rand::prelude::{thread_rng, Rng};
use rand::random_range;
#[derive(Clone)]
pub struct RandomDice;
@ -73,10 +73,7 @@ fn dice(
let dice: usize = call.get_flag(engine_state, stack, "dice")?.unwrap_or(1);
let sides: usize = call.get_flag(engine_state, stack, "sides")?.unwrap_or(6);
let iter = (0..dice).map(move |_| {
let mut thread_rng = thread_rng();
Value::int(thread_rng.gen_range(1..sides + 1) as i64, span)
});
let iter = (0..dice).map(move |_| Value::int(random_range(1..sides + 1) as i64, span));
Ok(ListStream::new(iter, span, engine_state.signals().clone()).into())
}

View File

@ -1,6 +1,6 @@
use nu_engine::command_prelude::*;
use nu_protocol::{FloatRange, Range};
use rand::prelude::{thread_rng, Rng};
use rand::random_range;
use std::ops::Bound;
#[derive(Clone)]
@ -71,8 +71,6 @@ fn float(
let span = call.head;
let range: Option<Spanned<Range>> = call.opt(engine_state, stack, 0)?;
let mut thread_rng = thread_rng();
match range {
Some(range) => {
let range_span = range.span;
@ -90,15 +88,15 @@ fn float(
}
let value = match range.end() {
Bound::Included(end) => thread_rng.gen_range(range.start()..=end),
Bound::Excluded(end) => thread_rng.gen_range(range.start()..end),
Bound::Unbounded => thread_rng.gen_range(range.start()..f64::INFINITY),
Bound::Included(end) => random_range(range.start()..=end),
Bound::Excluded(end) => random_range(range.start()..end),
Bound::Unbounded => random_range(range.start()..f64::INFINITY),
};
Ok(PipelineData::Value(Value::float(value, span), None))
}
None => Ok(PipelineData::Value(
Value::float(thread_rng.gen_range(0.0..1.0), span),
Value::float(random_range(0.0..1.0), span),
None,
)),
}

View File

@ -1,6 +1,6 @@
use nu_engine::command_prelude::*;
use nu_protocol::Range;
use rand::prelude::{thread_rng, Rng};
use rand::random_range;
use std::ops::Bound;
#[derive(Clone)]
@ -75,8 +75,6 @@ fn integer(
let span = call.head;
let range: Option<Spanned<Range>> = call.opt(engine_state, stack, 0)?;
let mut thread_rng = thread_rng();
match range {
Some(range) => {
let range_span = range.span;
@ -94,9 +92,9 @@ fn integer(
}
let value = match range.end() {
Bound::Included(end) => thread_rng.gen_range(range.start()..=end),
Bound::Excluded(end) => thread_rng.gen_range(range.start()..end),
Bound::Unbounded => thread_rng.gen_range(range.start()..=i64::MAX),
Bound::Included(end) => random_range(range.start()..=end),
Bound::Excluded(end) => random_range(range.start()..end),
Bound::Unbounded => random_range(range.start()..=i64::MAX),
};
Ok(PipelineData::Value(Value::int(value, span), None))
@ -110,7 +108,7 @@ fn integer(
}
}
None => Ok(PipelineData::Value(
Value::int(thread_rng.gen_range(0..=i64::MAX), span),
Value::int(random_range(0..=i64::MAX), span),
None,
)),
}

View File

@ -1,5 +1,6 @@
use data_encoding::HEXUPPER;
use rand::prelude::*;
use rand::random_range;
use rand_chacha::ChaCha8Rng;
use nu_test_support::nu;
@ -16,7 +17,7 @@ fn random_bytes() -> Vec<String> {
(0..NUM)
.map(|_| {
let length = rng.gen_range(0..512);
let length = random_range(0..512);
let mut bytes = vec![0u8; length];
rng.fill_bytes(&mut bytes);
HEXUPPER.encode(&bytes)

View File

@ -7,8 +7,9 @@ use nu_test_support::{
playground::{Dirs, Playground},
};
use rand::{
distributions::{Alphanumeric, DistString, Standard},
distr::{Alphanumeric, SampleString, StandardUniform},
prelude::Distribution,
random_range,
rngs::StdRng,
Rng, SeedableRng,
};
@ -382,7 +383,7 @@ struct TestRow(
impl TestRow {
pub fn random() -> Self {
StdRng::from_entropy().sample(Standard)
StdRng::from_os_rng().sample(StandardUniform)
}
}
@ -433,12 +434,12 @@ impl TryFrom<&rusqlite::Row<'_>> for TestRow {
}
}
impl Distribution<TestRow> for Standard {
impl Distribution<TestRow> for StandardUniform {
fn sample<R>(&self, rng: &mut R) -> TestRow
where
R: rand::Rng + ?Sized,
{
let dt = DateTime::from_timestamp_millis(rng.gen_range(0..2324252554000))
let dt = DateTime::from_timestamp_millis(random_range(0..2324252554000))
.unwrap()
.fixed_offset();
@ -446,18 +447,18 @@ impl Distribution<TestRow> for Standard {
// limit the size of the numbers to work around
// https://github.com/nushell/nushell/issues/10612
let filesize = rng.gen_range(-1024..=1024);
let duration = rng.gen_range(-1024..=1024);
let filesize = random_range(-1024..=1024);
let duration = random_range(-1024..=1024);
TestRow(
rng.gen(),
rng.gen(),
rng.gen(),
rng.random(),
rng.random(),
rng.random(),
filesize,
duration,
dt,
rand_string,
rng.gen::<u64>().to_be_bytes().to_vec(),
rng.random::<u64>().to_be_bytes().to_vec(),
rusqlite::types::Value::Null,
)
}