Skip to content

Commit cf51092

Browse files
committed
chor(deps)!: Upgrade dependency rand to v0.9
Prepare for rust edition 2024, where `gen` will be a language keyword.
1 parent 9906d5e commit cf51092

18 files changed

+98
-119
lines changed

twenty-first/Cargo.toml

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,7 @@ lazy_static = "1.5.0"
4444
num-bigint = { version = "0.4", features = ["serde"] }
4545
num-traits = "0.2"
4646
phf = { version = "0.11", features = ["macros"] }
47-
rand = { version = "0.8", features = ["min_const_gen"] }
48-
rand_distr = "0.4"
47+
rand = "0.9"
4948
rayon = "1.10"
5049
serde = { version = "1.0", features = ["derive"] }
5150
serde-big-array = "0"

twenty-first/benches/merkle_tree_auth_structure_size.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -84,7 +84,7 @@ fn auth_structure_len(c: &mut Criterion<AuthStructureEncodingLength>) {
8484
let mut total_len = AuthStructureEncodingLength(0.0);
8585
for _ in 0..iters {
8686
let opened_indices = (0..num_opened_indices)
87-
.map(|_| rng.gen_range(0..num_leafs))
87+
.map(|_| rng.random_range(0..num_leafs))
8888
.collect_vec();
8989
let auth_structure = mt.authentication_structure(&opened_indices).unwrap();
9090
let this_len = auth_structure.encode().len();

twenty-first/benches/merkle_tree_authenticate.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -74,7 +74,7 @@ impl MerkleTreeSampler {
7474

7575
fn indices_to_open(&mut self) -> Vec<usize> {
7676
(0..self.num_opened_indices)
77-
.map(|_| self.rng.gen_range(0..self.num_leafs()))
77+
.map(|_| self.rng.random_range(0..self.num_leafs()))
7878
.collect()
7979
}
8080

twenty-first/src/amount/u32s.rs

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,9 @@ use num_bigint::BigUint;
1212
use num_traits::ConstZero;
1313
use num_traits::One;
1414
use num_traits::Zero;
15+
use rand::distr::Distribution;
16+
use rand::distr::StandardUniform;
1517
use rand::Rng;
16-
use rand_distr::Distribution;
17-
use rand_distr::Standard;
1818
use serde_big_array;
1919
use serde_big_array::BigArray;
2020
use serde_derive::Deserialize;
@@ -304,9 +304,9 @@ impl<const N: usize> Sum for U32s<N> {
304304
}
305305
}
306306

307-
impl<const N: usize> Distribution<U32s<N>> for Standard {
307+
impl<const N: usize> Distribution<U32s<N>> for StandardUniform {
308308
fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> U32s<N> {
309-
let values = rng.sample::<[u32; N], Standard>(Standard);
309+
let values = rng.random();
310310
U32s { values }
311311
}
312312
}
@@ -386,7 +386,6 @@ impl<const N: usize> BFieldCodec for U32s<N> {
386386
#[cfg(test)]
387387
mod u32s_tests {
388388
use rand::random;
389-
use rand::thread_rng;
390389
use rand::Rng;
391390
use rand::RngCore;
392391

@@ -418,7 +417,7 @@ mod u32s_tests {
418417

419418
#[test]
420419
fn u128_conversion_test() {
421-
let mut rng = thread_rng();
420+
let mut rng = rand::rng();
422421
for _ in 0..100 {
423422
let a_as_u128: u128 = ((rng.next_u64() as u128) << 64) | rng.next_u64() as u128;
424423
let a: U32s<4> = a_as_u128.try_into().unwrap();
@@ -756,12 +755,12 @@ mod u32s_tests {
756755
fn get_bit_set_bit_pbt() {
757756
let outer_count = 100;
758757
let inner_count = 20;
759-
let mut rng = rand::thread_rng();
758+
let mut rng = rand::rng();
760759
let vals: Vec<U32s<4>> = random_elements(outer_count);
761760
for mut val in vals {
762-
let bit_value: bool = rng.gen();
761+
let bit_value: bool = rng.random();
763762
for _ in 0..inner_count {
764-
let bit_index = rng.gen_range(0..4 * 32);
763+
let bit_index = rng.random_range(0..4 * 32);
765764
val.set_bit(bit_index, bit_value);
766765
assert_eq!(bit_value, val.get_bit(bit_index));
767766
}

twenty-first/src/math/b_field_element.rs

Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -21,9 +21,9 @@ use num_traits::ConstZero;
2121
use num_traits::One;
2222
use num_traits::Zero;
2323
use phf::phf_map;
24+
use rand::distr::Distribution;
25+
use rand::distr::StandardUniform;
2426
use rand::Rng;
25-
use rand_distr::Distribution;
26-
use rand_distr::Standard;
2727
use serde::Deserialize;
2828
use serde::Deserializer;
2929
use serde::Serialize;
@@ -643,9 +643,9 @@ impl CyclicGroupGenerator for BFieldElement {
643643
}
644644
}
645645

646-
impl Distribution<BFieldElement> for Standard {
646+
impl Distribution<BFieldElement> for StandardUniform {
647647
fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> BFieldElement {
648-
BFieldElement::new(rng.gen_range(0..=BFieldElement::MAX))
648+
BFieldElement::new(rng.random_range(0..=BFieldElement::MAX))
649649
}
650650
}
651651

@@ -802,7 +802,6 @@ mod b_prime_field_element_test {
802802
use proptest::prelude::*;
803803
use proptest_arbitrary_interop::arb;
804804
use rand::random;
805-
use rand::thread_rng;
806805
use test_strategy::proptest;
807806

808807
use crate::math::b_field_element::*;
@@ -1314,8 +1313,8 @@ mod b_prime_field_element_test {
13141313
let one = BFieldElement::ONE;
13151314
assert_eq!(zero, zero.inverse_or_zero());
13161315

1317-
let mut rng = rand::thread_rng();
1318-
let elem: BFieldElement = rng.gen();
1316+
let mut rng = rand::rng();
1317+
let elem: BFieldElement = rng.random();
13191318
if elem.is_zero() {
13201319
assert_eq!(zero, elem.inverse_or_zero())
13211320
} else {
@@ -1325,10 +1324,10 @@ mod b_prime_field_element_test {
13251324

13261325
#[test]
13271326
fn test_random_squares() {
1328-
let mut rng = thread_rng();
1327+
let mut rng = rand::rng();
13291328
let p = BFieldElement::P;
13301329
for _ in 0..100 {
1331-
let a = rng.gen_range(0..p);
1330+
let a = rng.random_range(0..p);
13321331
let asq = (((a as u128) * (a as u128)) % (p as u128)) as u64;
13331332
let b = BFieldElement::new(a);
13341333
let bsq = BFieldElement::new(asq);
@@ -1353,9 +1352,9 @@ mod b_prime_field_element_test {
13531352

13541353
#[test]
13551354
fn test_random_raw() {
1356-
let mut rng = thread_rng();
1355+
let mut rng = rand::rng();
13571356
for _ in 0..100 {
1358-
let e: BFieldElement = rng.gen();
1357+
let e: BFieldElement = rng.random();
13591358
let bytes = e.raw_bytes();
13601359
let c = BFieldElement::from_raw_bytes(&bytes);
13611360
assert_eq!(e, c);

twenty-first/src/math/digest.rs

Lines changed: 4 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,9 @@ use itertools::Itertools;
88
use num_bigint::BigUint;
99
use num_traits::ConstZero;
1010
use num_traits::Zero;
11+
use rand::distr::Distribution;
12+
use rand::distr::StandardUniform;
1113
use rand::Rng;
12-
use rand_distr::Distribution;
13-
use rand_distr::Standard;
1414
use serde::Deserialize;
1515
use serde::Deserializer;
1616
use serde::Serialize;
@@ -105,16 +105,9 @@ impl fmt::UpperHex for Digest {
105105
}
106106
}
107107

108-
impl Distribution<Digest> for Standard {
108+
impl Distribution<Digest> for StandardUniform {
109109
fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> Digest {
110-
// FIXME: impl Fill for [BFieldElement] to rng.fill() a [BFieldElement; Digest::LEN].
111-
let elements = rng
112-
.sample_iter(Standard)
113-
.take(Digest::LEN)
114-
.collect_vec()
115-
.try_into()
116-
.unwrap();
117-
Digest::new(elements)
110+
Digest::new(rng.random())
118111
}
119112
}
120113

twenty-first/src/math/lattice.rs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -818,7 +818,6 @@ mod lattice_test {
818818
use num_traits::ConstOne;
819819
use num_traits::Zero;
820820
use rand::random;
821-
use rand::thread_rng;
822821
use rand::RngCore;
823822
use sha3::Digest as Sha3Digest;
824823
use sha3::Sha3_256;
@@ -875,7 +874,7 @@ mod lattice_test {
875874

876875
#[test]
877876
fn test_embedding() {
878-
let mut rng = thread_rng();
877+
let mut rng = rand::rng();
879878
let msg: [u8; 32] = (0..32)
880879
.map(|_| (rng.next_u32() % 256) as u8)
881880
.collect_vec()
@@ -889,7 +888,7 @@ mod lattice_test {
889888

890889
#[test]
891890
fn test_module_distributivity() {
892-
let mut rng = thread_rng();
891+
let mut rng = rand::rng();
893892
let randomness = (0..(2 * 3 + 2 * 3 + 3) * 64 * 9)
894893
.map(|_| (rng.next_u32() % 256) as u8)
895894
.collect_vec();
@@ -912,7 +911,7 @@ mod lattice_test {
912911

913912
#[test]
914913
fn test_module_multiply() {
915-
let mut rng = thread_rng();
914+
let mut rng = rand::rng();
916915
let randomness = (0..(2 * 3 + 2 * 3 + 3) * 64 * 9)
917916
.map(|_| (rng.next_u32() % 256) as u8)
918917
.collect_vec();
@@ -931,7 +930,7 @@ mod lattice_test {
931930

932931
#[test]
933932
fn test_kem() {
934-
let mut rng = thread_rng();
933+
let mut rng = rand::rng();
935934
let mut key_randomness: [u8; 32] = [0u8; 32];
936935
rng.fill_bytes(&mut key_randomness);
937936
let mut ctxt_randomness: [u8; 32] = [0u8; 32];
@@ -978,7 +977,7 @@ mod lattice_test {
978977
fn serialization_deserialization_test() {
979978
// This is tested here since the serialization for these objects is a bit more complicated
980979
// than the standard serde stuff. So to be sure that it works, we just run this test here.
981-
let mut rng = thread_rng();
980+
let mut rng = rand::rng();
982981
let mut key_randomness: [u8; 32] = [0u8; 32];
983982
rng.fill_bytes(&mut key_randomness);
984983
let mut ctxt_randomness: [u8; 32] = [0u8; 32];

twenty-first/src/math/mds.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -498,14 +498,13 @@ pub fn generated_function(input: &[u64]) -> [u64; 16] {
498498
#[cfg(test)]
499499
mod tests {
500500
use itertools::Itertools;
501-
use rand::thread_rng;
502501
use rand::RngCore;
503502

504503
use super::*;
505504

506505
#[test]
507506
fn test_karatsuba() {
508-
let mut rng = thread_rng();
507+
let mut rng = rand::rng();
509508
let n = 8;
510509
let a = (0..n)
511510
.map(|_| (rng.next_u32() % (1 << 20)) as u64)
@@ -525,7 +524,7 @@ mod tests {
525524

526525
#[test]
527526
fn test_negacyclic_mul() {
528-
let mut rng = thread_rng();
527+
let mut rng = rand::rng();
529528
let n = 8;
530529
let a = (0..n)
531530
.map(|_| (rng.next_u32() % (1 << 20)) as u64)
@@ -548,7 +547,7 @@ mod tests {
548547

549548
#[test]
550549
fn test_recursive_cyclic_mul() {
551-
let mut rng = thread_rng();
550+
let mut rng = rand::rng();
552551
let n = 16;
553552
let a = (0..n).map(|_| rng.next_u32() as u64).collect_vec();
554553
let b = (0..n)

twenty-first/src/math/other.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
use rand::distributions::Distribution;
2-
use rand::distributions::Standard;
1+
use rand::distr::Distribution;
2+
use rand::distr::StandardUniform;
33
use rand::Rng;
44

5-
/// Generate `n` random elements using [`rand::thread_rng()`].
5+
/// Generate `n` random elements using [`rand::rng()`].
66
///
77
/// For example implementations of the [`Distribution`] trait for [`Standard`], see
88
/// [`BFieldElement`][bfe] or [`XFieldElement`][xfe].
@@ -11,7 +11,7 @@ use rand::Rng;
1111
/// [xfe]: crate::prelude::XFieldElement
1212
pub fn random_elements<T>(n: usize) -> Vec<T>
1313
where
14-
Standard: Distribution<T>,
14+
StandardUniform: Distribution<T>,
1515
{
16-
rand::thread_rng().sample_iter(Standard).take(n).collect()
16+
rand::rng().sample_iter(StandardUniform).take(n).collect()
1717
}

twenty-first/src/math/tip5.rs

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -706,7 +706,6 @@ pub(crate) mod tip5_tests {
706706
use prop::sample::size_range;
707707
use proptest::prelude::*;
708708
use proptest_arbitrary_interop::arb;
709-
use rand::thread_rng;
710709
use rand::Rng;
711710
use rand::RngCore;
712711
use rayon::prelude::IntoParallelIterator;
@@ -720,8 +719,8 @@ pub(crate) mod tip5_tests {
720719
impl Tip5 {
721720
pub(crate) fn randomly_seeded() -> Self {
722721
let mut sponge = Self::init();
723-
let mut rng = thread_rng();
724-
sponge.absorb(rng.gen());
722+
let mut rng = rand::rng();
723+
sponge.absorb(rng.random());
725724
sponge
726725
}
727726
}
@@ -1061,7 +1060,7 @@ pub(crate) mod tip5_tests {
10611060

10621061
#[test]
10631062
fn test_complex_product() {
1064-
let mut rng = thread_rng();
1063+
let mut rng = rand::rng();
10651064
let mut random_small_i64 = || (rng.next_u32() % (1 << 16)) as i64;
10661065
for _ in 0..1000 {
10671066
let f = (random_small_i64(), random_small_i64());
@@ -1088,9 +1087,9 @@ pub(crate) mod tip5_tests {
10881087

10891088
#[test]
10901089
fn test_mds_agree() {
1091-
let mut rng = thread_rng();
1090+
let mut rng = rand::rng();
10921091
let initial_state: [BFieldElement; STATE_SIZE] = (0..STATE_SIZE)
1093-
.map(|_| BFieldElement::new(rng.gen_range(0..10)))
1092+
.map(|_| BFieldElement::new(rng.random_range(0..10)))
10941093
.collect_vec()
10951094
.try_into()
10961095
.unwrap();

twenty-first/src/math/x_field_element.rs

Lines changed: 7 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -15,9 +15,9 @@ use num_traits::ConstOne;
1515
use num_traits::ConstZero;
1616
use num_traits::One;
1717
use num_traits::Zero;
18+
use rand::distr::Distribution;
19+
use rand::distr::StandardUniform;
1820
use rand::Rng;
19-
use rand_distr::Distribution;
20-
use rand_distr::Standard;
2121
use serde::Deserialize;
2222
use serde::Serialize;
2323

@@ -321,14 +321,9 @@ impl PrimitiveRootOfUnity for XFieldElement {
321321
}
322322
}
323323

324-
impl Distribution<XFieldElement> for Standard {
324+
impl Distribution<XFieldElement> for StandardUniform {
325325
fn sample<R: Rng + ?Sized>(&self, rng: &mut R) -> XFieldElement {
326-
let coefficients = [
327-
rng.gen::<BFieldElement>(),
328-
rng.gen::<BFieldElement>(),
329-
rng.gen::<BFieldElement>(),
330-
];
331-
XFieldElement { coefficients }
326+
XFieldElement::new(rng.random())
332327
}
333328
}
334329

@@ -834,10 +829,10 @@ mod tests {
834829

835830
#[test]
836831
fn x_field_overloaded_arithmetic_test() {
837-
let mut rng = rand::thread_rng();
832+
let mut rng = rand::rng();
838833
for _ in 0..100 {
839-
let xfe = rng.gen::<XFieldElement>();
840-
let bfe = rng.gen::<BFieldElement>();
834+
let xfe = rng.random::<XFieldElement>();
835+
let bfe = rng.random::<BFieldElement>();
841836

842837
// 1. xfe + bfe.lift() = bfe.lift() + xfe
843838
// 2. xfe + bfe = xfe + bfe.lift()

0 commit comments

Comments
 (0)