From 312fc1508ef16249b2eedbed70a4edf97644ea23 Mon Sep 17 00:00:00 2001 From: Joel Natividad <1980690+jqnatividad@users.noreply.github.com> Date: Fri, 13 Feb 2026 11:46:10 -0500 Subject: [PATCH 1/3] deps: bump rand to 0.10, rand_hc to 0.5, rand_xoshiro to 0.8 Update rand crate family to latest versions. Remove "rand/nightly" feature flag which no longer exists in rand 0.10. Co-Authored-By: Claude Opus 4.6 --- Cargo.toml | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index 2ed08a4f0..9ed9e3c0a 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -227,9 +227,9 @@ qsv-stats = "0.45" qsv_currency = "0.7" qsv-tabwriter = "2" qsv_vader_sentiment_analysis = { version = "0.2", optional = true } -rand = "0.9" -rand_hc = "0.4" -rand_xoshiro = "0.7" +rand = "0.10" +rand_hc = "0.5" +rand_xoshiro = "0.8" rayon = "1.11" redis = { version = "1", features = ["ahash"], default-features = false } regex = "1" @@ -433,7 +433,6 @@ feature_capable = [] nightly = [ "crc32fast/nightly", "pyo3/nightly", - "rand/nightly", "rand/simd_support", "simd-json/hints", "foldhash/nightly", From b8aae2f6dceec9db5a3629e8d545df222bf691db Mon Sep 17 00:00:00 2001 From: Joel Natividad <1980690+jqnatividad@users.noreply.github.com> Date: Fri, 13 Feb 2026 11:46:31 -0500 Subject: [PATCH 2/3] refactor: migrate to rand 0.10 API changes MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Rename `Rng` → `RngExt` for extension method imports - Replace `from_os_rng()` with `rand::make_rng::()` - Replace deprecated `choose_multiple()` with `sample()` Co-Authored-By: Claude Opus 4.6 --- src/cmd/fetch.rs | 2 +- src/cmd/fetchpost.rs | 2 +- src/cmd/sample.rs | 10 +++++----- src/cmd/select.rs | 2 +- src/cmd/sort.rs | 6 +++--- src/main.rs | 2 +- src/mainlite.rs | 2 +- src/odhtcache.rs | 2 +- tests/tests.rs | 2 +- 9 files changed, 15 insertions(+), 15 deletions(-) diff --git a/src/cmd/fetch.rs b/src/cmd/fetch.rs index 4dc93149f..f176de133 100644 --- a/src/cmd/fetch.rs +++ b/src/cmd/fetch.rs @@ -259,7 +259,7 @@ use log::{ Level::{Debug, Trace, Warn}, debug, error, info, log_enabled, warn, }; -use rand::Rng; +use rand::RngExt; use regex::Regex; use reqwest::{ blocking::Client, diff --git a/src/cmd/fetchpost.rs b/src/cmd/fetchpost.rs index 6e86f1d93..a08b4aeb2 100644 --- a/src/cmd/fetchpost.rs +++ b/src/cmd/fetchpost.rs @@ -270,7 +270,7 @@ use log::{ }; use minijinja::Environment; use minijinja_contrib::pycompat::unknown_method_callback; -use rand::Rng; +use rand::RngExt; use regex::Regex; use reqwest::{ blocking::Client, diff --git a/src/cmd/sample.rs b/src/cmd/sample.rs index 49f11ff00..b0f789521 100644 --- a/src/cmd/sample.rs +++ b/src/cmd/sample.rs @@ -235,7 +235,7 @@ use foldhash::{HashMap, HashMapExt, HashSet, HashSetExt}; use futures_util::StreamExt; use qsv_dateparser::parse_with_preference_and_timezone; use rand::{ - Rng, SeedableRng, + Rng, RngExt, SeedableRng, distr::{Bernoulli, Distribution}, prelude::IndexedRandom, rngs::StdRng, @@ -381,7 +381,7 @@ trait RngProvider: Sized { if let Some(seed) = seed { Self::RngType::seed_from_u64(seed) // DevSkim: ignore DS148264 } else { - Self::RngType::from_os_rng() + rand::make_rng::() } } } @@ -1922,21 +1922,21 @@ fn sample_cluster( RngKind::Standard => { let mut rng = StandardRng::create(seed); all_clusters - .choose_multiple(&mut rng, requested_clusters.min(all_clusters.len())) + .sample(&mut rng, requested_clusters.min(all_clusters.len())) .cloned() .collect() }, RngKind::Faster => { let mut rng = FasterRng::create(seed); all_clusters - .choose_multiple(&mut rng, requested_clusters.min(all_clusters.len())) + .sample(&mut rng, requested_clusters.min(all_clusters.len())) .cloned() .collect() }, RngKind::Cryptosecure => { let mut rng = CryptoRng::create(seed); all_clusters - .choose_multiple(&mut rng, requested_clusters.min(all_clusters.len())) + .sample(&mut rng, requested_clusters.min(all_clusters.len())) .cloned() .collect() }, diff --git a/src/cmd/select.rs b/src/cmd/select.rs index ddf5057d3..297419445 100644 --- a/src/cmd/select.rs +++ b/src/cmd/select.rs @@ -142,7 +142,7 @@ pub fn run(argv: &[&str]) -> CliResult<()> { // cryptographic security in this context. rand::rngs::StdRng::seed_from_u64(seed) // DevSkim: ignore DS148264 }, - _ => rand::rngs::StdRng::from_os_rng(), + _ => rand::make_rng::(), }; let initial_selection = rconfig.selection(&headers)?; diff --git a/src/cmd/sort.rs b/src/cmd/sort.rs index ad58ae3da..b0cadc40f 100644 --- a/src/cmd/sort.rs +++ b/src/cmd/sort.rs @@ -70,7 +70,7 @@ Common options: use std::{cmp, str::FromStr}; // use fastrand; //DevSkim: ignore DS148264 -use rand::{Rng, SeedableRng, rngs::StdRng, seq::SliceRandom}; +use rand::{RngExt, SeedableRng, rngs::StdRng, seq::SliceRandom}; use rand_hc::Hc128Rng; use rand_xoshiro::Xoshiro256Plus; use rayon::slice::ParallelSliceMut; @@ -180,7 +180,7 @@ pub fn run(argv: &[&str]) -> CliResult<()> { }, RngKind::Faster => { let mut rng = match args.flag_seed { - None => Xoshiro256Plus::from_os_rng(), + None => rand::make_rng::(), Some(sd) => Xoshiro256Plus::seed_from_u64(sd), // DevSkim: ignore DS148264 }; SliceRandom::shuffle(&mut *all, &mut rng); //DevSkim: ignore DS148264 @@ -196,7 +196,7 @@ pub fn run(argv: &[&str]) -> CliResult<()> { }, }; let mut rng: Hc128Rng = match args.flag_seed { - None => Hc128Rng::from_os_rng(), + None => rand::make_rng::(), Some(_) => Hc128Rng::from_seed(seed_32), }; SliceRandom::shuffle(&mut *all, &mut rng); diff --git a/src/main.rs b/src/main.rs index ad7d58a90..9d6ed364b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -38,7 +38,7 @@ use std::{env, io, time::Instant}; extern crate qsv_docopt as docopt; use docopt::Docopt; -use rand::Rng; +use rand::RngExt; use serde::Deserialize; use crate::{ diff --git a/src/mainlite.rs b/src/mainlite.rs index c8e29744b..7cb415ec2 100644 --- a/src/mainlite.rs +++ b/src/mainlite.rs @@ -2,7 +2,7 @@ use std::{env, io, time::Instant}; extern crate qsv_docopt as docopt; use docopt::Docopt; -use rand::Rng; +use rand::RngExt; use serde::Deserialize; use crate::{ diff --git a/src/odhtcache.rs b/src/odhtcache.rs index 1a60bf3e3..958dea238 100644 --- a/src/odhtcache.rs +++ b/src/odhtcache.rs @@ -292,7 +292,7 @@ impl Drop for ExtDedupCache { mod tests { use std::fs; - use rand::{Rng, distr::Alphanumeric, rng}; + use rand::{RngExt, distr::Alphanumeric, rng}; use tempfile::TempDir; use super::*; diff --git a/tests/tests.rs b/tests/tests.rs index 877464e46..21f428b12 100644 --- a/tests/tests.rs +++ b/tests/tests.rs @@ -10,7 +10,7 @@ extern crate stats; use std::{env, fmt, mem::transmute, ops}; use quickcheck::{Arbitrary, Gen, QuickCheck, Testable}; -use rand::Rng; +use rand::RngExt; // use assert_eq; macro_rules! svec[ From c96ab18a18f9eb9e9dd8400b361b3eff76d7d4b8 Mon Sep 17 00:00:00 2001 From: Joel Natividad <1980690+jqnatividad@users.noreply.github.com> Date: Fri, 13 Feb 2026 11:46:41 -0500 Subject: [PATCH 3/3] chore: update Cargo.lock for rand 0.10 migration Co-Authored-By: Claude Opus 4.6 --- Cargo.lock | 53 +++++++++++++++++++++++++++++++++++++---------------- 1 file changed, 37 insertions(+), 16 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d900be449..e76dd6c2a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -193,7 +193,7 @@ checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0" dependencies = [ "cfg-if", "cipher", - "cpufeatures", + "cpufeatures 0.2.17", ] [[package]] @@ -914,7 +914,7 @@ dependencies = [ "cc", "cfg-if", "constant_time_eq", - "cpufeatures", + "cpufeatures 0.2.17", "memmap2", "rayon-core", ] @@ -1191,9 +1191,9 @@ dependencies = [ [[package]] name = "cc" -version = "1.2.55" +version = "1.2.56" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "47b26a0954ae34af09b50f0de26458fa95369a0d478d8236d3f93082b219bd29" +checksum = "aebf35691d1bfb0ac386a69bac2fde4dd276fb618cf8bf4f5318fe285e821bb2" dependencies = [ "find-msvc-tools", "jobserver", @@ -1228,6 +1228,17 @@ version = "0.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "613afe47fcd5fac7ccf1db93babcb082c5994d996f20b8b159f2ad1658eb5724" +[[package]] +name = "chacha20" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f8d983286843e49675a4b7a2d174efe136dc93a18d69130dd18198a6c167601" +dependencies = [ + "cfg-if", + "cpufeatures 0.3.0", + "rand_core 0.10.0", +] + [[package]] name = "chardetng" version = "0.1.17" @@ -1591,6 +1602,15 @@ dependencies = [ "libc", ] +[[package]] +name = "cpufeatures" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201" +dependencies = [ + "libc", +] + [[package]] name = "crc" version = "2.1.0" @@ -1862,7 +1882,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "curve25519-dalek-derive", "digest", "fiat-crypto", @@ -3782,9 +3802,9 @@ checksum = "2c4a545a15244c7d945065b5d392b2d2d7f21526fba56ce51467b06ed445e8f7" [[package]] name = "libc" -version = "0.2.181" +version = "0.2.182" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "459427e2af2b9c839b132acb702a1c654d95e10f8c326bfc2ad11310e458b1c5" +checksum = "6800badb6cb2082ffd7b6a67e6125bb39f18782f793520caee8cb8846be06112" [[package]] name = "libflate" @@ -5872,7 +5892,7 @@ dependencies = [ "qsv_docopt", "qsv_vader_sentiment_analysis", "quickcheck", - "rand 0.9.2", + "rand 0.10.0", "rand_hc", "rand_xoshiro", "rayon", @@ -6165,6 +6185,7 @@ version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bc266eb313df6c5c09c1c7b1fbe2510961e5bcd3add930c1e31f7ed9da0feff8" dependencies = [ + "chacha20", "getrandom 0.4.1", "rand_core 0.10.0", ] @@ -6225,20 +6246,20 @@ dependencies = [ [[package]] name = "rand_hc" -version = "0.4.0" +version = "0.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "54fc7b35e3026136eaf1decdc66ecde3efadfd663cc0d71115ad40da7ebcff63" +checksum = "2679e70798646edbc105ddf9d15c9d977936bdf033b8c834b83f144317c6f956" dependencies = [ - "rand_core 0.9.5", + "rand_core 0.10.0", ] [[package]] name = "rand_xoshiro" -version = "0.7.0" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f703f4665700daf5512dcca5f43afa6af89f09db47fb56be587f80636bda2d41" +checksum = "1f0b2cc7bfeef8f0320ca45f88b00157a03c67137022d59393614352d6bf4312" dependencies = [ - "rand_core 0.9.5", + "rand_core 0.10.0", ] [[package]] @@ -7142,7 +7163,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e3bf829a2d51ab4a5ddf1352d8470c140cadc8301b2ae1789db023f01cedd6ba" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "digest", ] @@ -7159,7 +7180,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ "cfg-if", - "cpufeatures", + "cpufeatures 0.2.17", "digest", ]