From 12977bc7c4cfa6e97936e8e0ecd871183bced2a4 Mon Sep 17 00:00:00 2001 From: trinity-1686a Date: Wed, 14 Jan 2026 10:19:09 +0100 Subject: [PATCH] upgrade some dependancies (#2802) including rand, which had a few breaking changes --- Cargo.toml | 6 +++--- benches/agg_bench.rs | 12 ++++++------ benches/and_or_queries.rs | 16 ++++++++-------- benches/bool_queries_with_range.rs | 8 ++++---- benches/range_queries.rs | 4 ++-- benches/range_query.rs | 8 ++++---- bitpacker/Cargo.toml | 2 +- bitpacker/benches/bench.rs | 4 ++-- columnar/Cargo.toml | 2 +- columnar/benches/bench_column_values_get.rs | 2 +- columnar/benches/bench_create_column_values.rs | 2 +- columnar/benches/bench_optional_index.rs | 4 ++-- columnar/benches/bench_values_u128.rs | 2 +- columnar/benches/bench_values_u64.rs | 2 +- columnar/src/column_values/u64_based/linear.rs | 2 +- columnar/src/column_values/u64_based/tests.rs | 2 +- common/Cargo.toml | 2 +- common/benches/bench.rs | 4 ++-- common/src/bitset.rs | 2 +- src/collector/facet_collector.rs | 17 +++++++---------- src/collector/sort_key_top_collector.rs | 2 +- src/fastfield/alive_bitset.rs | 4 ++-- src/fastfield/mod.rs | 2 +- src/functional_test.rs | 18 +++++++++--------- src/lib.rs | 4 ++-- src/postings/compression/mod.rs | 5 ++++- src/postings/mod.rs | 6 +++--- src/query/phrase_query/regex_phrase_weight.rs | 2 +- src/query/range_query/range_query.rs | 2 +- src/query/range_query/range_query_fastfield.rs | 2 +- src/query/term_query/term_scorer.rs | 4 ++-- src/termdict/fst_termdict/merger.rs | 6 +++--- sstable/Cargo.toml | 2 +- sstable/benches/stream_bench.rs | 4 ++-- stacker/Cargo.toml | 4 ++-- stacker/benches/bench.rs | 4 ++-- stacker/fuzz_test/Cargo.toml | 4 ++-- stacker/fuzz_test/src/main.rs | 2 +- 38 files changed, 90 insertions(+), 90 deletions(-) diff --git a/Cargo.toml b/Cargo.toml index a2731789e..476117656 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -27,7 +27,7 @@ regex = { version = "1.5.5", default-features = false, features = [ aho-corasick = "1.0" tantivy-fst = "0.5" memmap2 = { version = "0.9.0", optional = true } -lz4_flex = { version = "0.11", default-features = false, optional = true } +lz4_flex = { version = "0.12", default-features = false, optional = true } zstd = { version = "0.13", optional = true, default-features = false } tempfile = { version = "3.12.0", optional = true } log = "0.4.16" @@ -76,7 +76,7 @@ winapi = "0.3.9" [dev-dependencies] binggan = "0.14.2" -rand = "0.8.5" +rand = "0.9" maplit = "1.0.2" matches = "0.1.9" pretty_assertions = "1.2.1" @@ -85,7 +85,7 @@ test-log = "0.2.10" futures = "0.3.21" paste = "1.0.11" more-asserts = "0.3.1" -rand_distr = "0.4.3" +rand_distr = "0.5" time = { version = "0.3.10", features = ["serde-well-known", "macros"] } postcard = { version = "1.0.4", features = [ "use-std", diff --git a/benches/agg_bench.rs b/benches/agg_bench.rs index 642532597..9313cca7a 100644 --- a/benches/agg_bench.rs +++ b/benches/agg_bench.rs @@ -1,8 +1,8 @@ use binggan::plugins::PeakMemAllocPlugin; use binggan::{black_box, InputGroup, PeakMemAlloc, INSTRUMENTED_SYSTEM}; -use rand::distributions::WeightedIndex; -use rand::prelude::SliceRandom; +use rand::distr::weighted::WeightedIndex; use rand::rngs::StdRng; +use rand::seq::IndexedRandom; use rand::{Rng, SeedableRng}; use rand_distr::Distribution; use serde_json::json; @@ -532,7 +532,7 @@ fn get_test_index_bench(cardinality: Cardinality) -> tantivy::Result { // Prepare 1000 unique terms sampled using a Zipf distribution. // Exponent ~1.1 approximates top-20 terms covering around ~20%. let terms_1000: Vec = (1..=1000).map(|i| format!("term_{i}")).collect(); - let zipf_1000 = rand_distr::Zipf::new(1000, 1.1f64).unwrap(); + let zipf_1000 = rand_distr::Zipf::new(1000.0, 1.1f64).unwrap(); { let mut rng = StdRng::from_seed([1u8; 32]); @@ -576,8 +576,8 @@ fn get_test_index_bench(cardinality: Cardinality) -> tantivy::Result { } let _val_max = 1_000_000.0; for _ in 0..doc_with_value { - let val: f64 = rng.gen_range(0.0..1_000_000.0); - let json = if rng.gen_bool(0.1) { + let val: f64 = rng.random_range(0.0..1_000_000.0); + let json = if rng.random_bool(0.1) { // 10% are numeric values json!({ "mixed_type": val }) } else { @@ -586,7 +586,7 @@ fn get_test_index_bench(cardinality: Cardinality) -> tantivy::Result { index_writer.add_document(doc!( text_field => "cool", json_field => json, - text_field_all_unique_terms => format!("unique_term_{}", rng.gen::()), + text_field_all_unique_terms => format!("unique_term_{}", rng.random::()), text_field_many_terms => many_terms_data.choose(&mut rng).unwrap().to_string(), text_field_few_terms_status => status_field_data[log_level_distribution.sample(&mut rng)].0, text_field_1000_terms_zipf => terms_1000[zipf_1000.sample(&mut rng) as usize - 1].as_str(), diff --git a/benches/and_or_queries.rs b/benches/and_or_queries.rs index 805061c18..5dd213685 100644 --- a/benches/and_or_queries.rs +++ b/benches/and_or_queries.rs @@ -55,29 +55,29 @@ fn build_shared_indices(num_docs: usize, p_a: f32, p_b: f32, p_c: f32) -> (Bench { let mut writer = index.writer_with_num_threads(1, 500_000_000).unwrap(); for _ in 0..num_docs { - let has_a = rng.gen_bool(p_a as f64); - let has_b = rng.gen_bool(p_b as f64); - let has_c = rng.gen_bool(p_c as f64); - let score = rng.gen_range(0u64..100u64); - let score2 = rng.gen_range(0u64..100_000u64); + let has_a = rng.random_bool(p_a as f64); + let has_b = rng.random_bool(p_b as f64); + let has_c = rng.random_bool(p_c as f64); + let score = rng.random_range(0u64..100u64); + let score2 = rng.random_range(0u64..100_000u64); let mut title_tokens: Vec<&str> = Vec::new(); let mut body_tokens: Vec<&str> = Vec::new(); if has_a { - if rng.gen_bool(0.1) { + if rng.random_bool(0.1) { title_tokens.push("a"); } else { body_tokens.push("a"); } } if has_b { - if rng.gen_bool(0.1) { + if rng.random_bool(0.1) { title_tokens.push("b"); } else { body_tokens.push("b"); } } if has_c { - if rng.gen_bool(0.1) { + if rng.random_bool(0.1) { title_tokens.push("c"); } else { body_tokens.push("c"); diff --git a/benches/bool_queries_with_range.rs b/benches/bool_queries_with_range.rs index 9123ccf3a..9b2849300 100644 --- a/benches/bool_queries_with_range.rs +++ b/benches/bool_queries_with_range.rs @@ -36,13 +36,13 @@ fn build_shared_indices(num_docs: usize, p_title_a: f32, distribution: &str) -> "dense" => { for doc_id in 0..num_docs { // Always add title to avoid empty documents - let title_token = if rng.gen_bool(p_title_a as f64) { + let title_token = if rng.random_bool(p_title_a as f64) { "a" } else { "b" }; - let num_rand = rng.gen_range(0u64..1000u64); + let num_rand = rng.random_range(0u64..1000u64); let num_asc = (doc_id / 10000) as u64; @@ -60,13 +60,13 @@ fn build_shared_indices(num_docs: usize, p_title_a: f32, distribution: &str) -> "sparse" => { for doc_id in 0..num_docs { // Always add title to avoid empty documents - let title_token = if rng.gen_bool(p_title_a as f64) { + let title_token = if rng.random_bool(p_title_a as f64) { "a" } else { "b" }; - let num_rand = rng.gen_range(0u64..10000000u64); + let num_rand = rng.random_range(0u64..10000000u64); let num_asc = doc_id as u64; diff --git a/benches/range_queries.rs b/benches/range_queries.rs index 56aaf54b9..c8095a01b 100644 --- a/benches/range_queries.rs +++ b/benches/range_queries.rs @@ -33,7 +33,7 @@ fn build_shared_indices(num_docs: usize, distribution: &str) -> BenchIndex { match distribution { "dense" => { for doc_id in 0..num_docs { - let num_rand = rng.gen_range(0u64..1000u64); + let num_rand = rng.random_range(0u64..1000u64); let num_asc = (doc_id / 10000) as u64; writer @@ -46,7 +46,7 @@ fn build_shared_indices(num_docs: usize, distribution: &str) -> BenchIndex { } "sparse" => { for doc_id in 0..num_docs { - let num_rand = rng.gen_range(0u64..10000000u64); + let num_rand = rng.random_range(0u64..10000000u64); let num_asc = doc_id as u64; writer diff --git a/benches/range_query.rs b/benches/range_query.rs index bf46666f3..e0feddd66 100644 --- a/benches/range_query.rs +++ b/benches/range_query.rs @@ -97,20 +97,20 @@ fn get_index_0_to_100() -> Index { let num_vals = 100_000; let docs: Vec<_> = (0..num_vals) .map(|_i| { - let id_name = if rng.gen_bool(0.01) { + let id_name = if rng.random_bool(0.01) { "veryfew".to_string() // 1% - } else if rng.gen_bool(0.1) { + } else if rng.random_bool(0.1) { "few".to_string() // 9% } else { "most".to_string() // 90% }; Doc { id_name, - id: rng.gen_range(0..100), + id: rng.random_range(0..100), // Multiply by 1000, so that we create most buckets in the compact space // The benches depend on this range to select n-percent of elements with the // methods below. - ip: Ipv6Addr::from_u128(rng.gen_range(0..100) * 1000), + ip: Ipv6Addr::from_u128(rng.random_range(0..100) * 1000), } }) .collect(); diff --git a/bitpacker/Cargo.toml b/bitpacker/Cargo.toml index 3b2a3e15e..945bd0082 100644 --- a/bitpacker/Cargo.toml +++ b/bitpacker/Cargo.toml @@ -18,5 +18,5 @@ homepage = "https://github.com/quickwit-oss/tantivy" bitpacking = { version = "0.9.2", default-features = false, features = ["bitpacker1x"] } [dev-dependencies] -rand = "0.8" +rand = "0.9" proptest = "1" diff --git a/bitpacker/benches/bench.rs b/bitpacker/benches/bench.rs index 7544687c2..12bfeb53e 100644 --- a/bitpacker/benches/bench.rs +++ b/bitpacker/benches/bench.rs @@ -4,8 +4,8 @@ extern crate test; #[cfg(test)] mod tests { + use rand::rng; use rand::seq::IteratorRandom; - use rand::thread_rng; use tantivy_bitpacker::{BitPacker, BitUnpacker, BlockedBitpacker}; use test::Bencher; @@ -27,7 +27,7 @@ mod tests { let num_els = 1_000_000u32; let bit_unpacker = BitUnpacker::new(bit_width); let data = create_bitpacked_data(bit_width, num_els); - let idxs: Vec = (0..num_els).choose_multiple(&mut thread_rng(), 100_000); + let idxs: Vec = (0..num_els).choose_multiple(&mut rng(), 100_000); b.iter(|| { let mut out = 0u64; for &idx in &idxs { diff --git a/columnar/Cargo.toml b/columnar/Cargo.toml index 9eeafe2d0..b91ab36ff 100644 --- a/columnar/Cargo.toml +++ b/columnar/Cargo.toml @@ -22,7 +22,7 @@ downcast-rs = "2.0.1" [dev-dependencies] proptest = "1" more-asserts = "0.3.1" -rand = "0.8" +rand = "0.9" binggan = "0.14.0" [[bench]] diff --git a/columnar/benches/bench_column_values_get.rs b/columnar/benches/bench_column_values_get.rs index d486b0dde..f2c1674ef 100644 --- a/columnar/benches/bench_column_values_get.rs +++ b/columnar/benches/bench_column_values_get.rs @@ -9,7 +9,7 @@ use tantivy_columnar::column_values::{CodecType, serialize_and_load_u64_based_co fn get_data() -> Vec { let mut rng = StdRng::seed_from_u64(2u64); let mut data: Vec<_> = (100..55_000_u64) - .map(|num| num + rng.r#gen::() as u64) + .map(|num| num + rng.random::() as u64) .collect(); data.push(99_000); data.insert(1000, 2000); diff --git a/columnar/benches/bench_create_column_values.rs b/columnar/benches/bench_create_column_values.rs index aa04e0661..339dbb199 100644 --- a/columnar/benches/bench_create_column_values.rs +++ b/columnar/benches/bench_create_column_values.rs @@ -6,7 +6,7 @@ use tantivy_columnar::column_values::{CodecType, serialize_u64_based_column_valu fn get_data() -> Vec { let mut rng = StdRng::seed_from_u64(2u64); let mut data: Vec<_> = (100..55_000_u64) - .map(|num| num + rng.r#gen::() as u64) + .map(|num| num + rng.random::() as u64) .collect(); data.push(99_000); data.insert(1000, 2000); diff --git a/columnar/benches/bench_optional_index.rs b/columnar/benches/bench_optional_index.rs index c157f1455..03ff1df97 100644 --- a/columnar/benches/bench_optional_index.rs +++ b/columnar/benches/bench_optional_index.rs @@ -8,7 +8,7 @@ const TOTAL_NUM_VALUES: u32 = 1_000_000; fn gen_optional_index(fill_ratio: f64) -> OptionalIndex { let mut rng: StdRng = StdRng::from_seed([1u8; 32]); let vals: Vec = (0..TOTAL_NUM_VALUES) - .map(|_| rng.gen_bool(fill_ratio)) + .map(|_| rng.random_bool(fill_ratio)) .enumerate() .filter(|(_pos, val)| *val) .map(|(pos, _)| pos as u32) @@ -25,7 +25,7 @@ fn random_range_iterator( let mut rng: StdRng = StdRng::from_seed([1u8; 32]); let mut current = start; std::iter::from_fn(move || { - current += rng.gen_range(avg_step_size - avg_deviation..=avg_step_size + avg_deviation); + current += rng.random_range(avg_step_size - avg_deviation..=avg_step_size + avg_deviation); if current >= end { None } else { Some(current) } }) } diff --git a/columnar/benches/bench_values_u128.rs b/columnar/benches/bench_values_u128.rs index e0b4f0a1f..09173c678 100644 --- a/columnar/benches/bench_values_u128.rs +++ b/columnar/benches/bench_values_u128.rs @@ -39,7 +39,7 @@ fn get_data_50percent_item() -> Vec { let mut data = vec![]; for _ in 0..300_000 { - let val = rng.gen_range(1..=100); + let val = rng.random_range(1..=100); data.push(val); } data.push(SINGLE_ITEM); diff --git a/columnar/benches/bench_values_u64.rs b/columnar/benches/bench_values_u64.rs index 36711c776..f0419d8c6 100644 --- a/columnar/benches/bench_values_u64.rs +++ b/columnar/benches/bench_values_u64.rs @@ -34,7 +34,7 @@ fn get_data_50percent_item() -> Vec { let mut data = vec![]; for _ in 0..300_000 { - let val = rng.gen_range(1..=100); + let val = rng.random_range(1..=100); data.push(val); } data.push(SINGLE_ITEM); diff --git a/columnar/src/column_values/u64_based/linear.rs b/columnar/src/column_values/u64_based/linear.rs index dbfa13a4c..7caf3bdfb 100644 --- a/columnar/src/column_values/u64_based/linear.rs +++ b/columnar/src/column_values/u64_based/linear.rs @@ -268,7 +268,7 @@ mod tests { #[test] fn linear_interpol_fast_field_rand() { - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); for _ in 0..50 { let mut data = (0..10_000).map(|_| rng.next_u64()).collect::>(); create_and_validate::(&data, "random"); diff --git a/columnar/src/column_values/u64_based/tests.rs b/columnar/src/column_values/u64_based/tests.rs index 6b2697263..ff5b7051a 100644 --- a/columnar/src/column_values/u64_based/tests.rs +++ b/columnar/src/column_values/u64_based/tests.rs @@ -122,7 +122,7 @@ pub(crate) fn create_and_validate( assert_eq!(vals, buffer); if !vals.is_empty() { - let test_rand_idx = rand::thread_rng().gen_range(0..=vals.len() - 1); + let test_rand_idx = rand::rng().random_range(0..=vals.len() - 1); let expected_positions: Vec = vals .iter() .enumerate() diff --git a/common/Cargo.toml b/common/Cargo.toml index 206329d39..e5e922869 100644 --- a/common/Cargo.toml +++ b/common/Cargo.toml @@ -21,5 +21,5 @@ serde = { version = "1.0.136", features = ["derive"] } [dev-dependencies] binggan = "0.14.0" proptest = "1.0.0" -rand = "0.8.4" +rand = "0.9" diff --git a/common/benches/bench.rs b/common/benches/bench.rs index 81260e116..a0b1f9451 100644 --- a/common/benches/bench.rs +++ b/common/benches/bench.rs @@ -1,6 +1,6 @@ use binggan::{BenchRunner, black_box}; +use rand::rng; use rand::seq::IteratorRandom; -use rand::thread_rng; use tantivy_common::{BitSet, TinySet, serialize_vint_u32}; fn bench_vint() { @@ -17,7 +17,7 @@ fn bench_vint() { black_box(out); }); - let vals: Vec = (0..20_000).choose_multiple(&mut thread_rng(), 100_000); + let vals: Vec = (0..20_000).choose_multiple(&mut rng(), 100_000); runner.bench_function("bench_vint_rand", move |_| { let mut out = 0u64; for val in vals.iter().cloned() { diff --git a/common/src/bitset.rs b/common/src/bitset.rs index 94e4ca5ae..e005ca40b 100644 --- a/common/src/bitset.rs +++ b/common/src/bitset.rs @@ -416,7 +416,7 @@ mod tests { use std::collections::HashSet; use ownedbytes::OwnedBytes; - use rand::distributions::Bernoulli; + use rand::distr::Bernoulli; use rand::rngs::StdRng; use rand::{Rng, SeedableRng}; diff --git a/src/collector/facet_collector.rs b/src/collector/facet_collector.rs index a94ec03e8..6eb2c3ee7 100644 --- a/src/collector/facet_collector.rs +++ b/src/collector/facet_collector.rs @@ -486,9 +486,9 @@ mod tests { use std::collections::BTreeSet; use columnar::Dictionary; - use rand::distributions::Uniform; + use rand::distr::Uniform; use rand::prelude::SliceRandom; - use rand::{thread_rng, Rng}; + use rand::{rng, Rng}; use super::{FacetCollector, FacetCounts}; use crate::collector::facet_collector::compress_mapping; @@ -731,7 +731,7 @@ mod tests { let schema = schema_builder.build(); let index = Index::create_in_ram(schema); - let uniform = Uniform::new_inclusive(1, 100_000); + let uniform = Uniform::new_inclusive(1, 100_000).unwrap(); let mut docs: Vec = vec![("a", 10), ("b", 100), ("c", 7), ("d", 12), ("e", 21)] .into_iter() @@ -741,14 +741,11 @@ mod tests { std::iter::repeat_n(doc, count) }) .map(|mut doc| { - doc.add_facet( - facet_field, - &format!("/facet/{}", thread_rng().sample(uniform)), - ); + doc.add_facet(facet_field, &format!("/facet/{}", rng().sample(uniform))); doc }) .collect(); - docs[..].shuffle(&mut thread_rng()); + docs[..].shuffle(&mut rng()); let mut index_writer: IndexWriter = index.writer_for_tests().unwrap(); for doc in docs { @@ -822,8 +819,8 @@ mod tests { #[cfg(all(test, feature = "unstable"))] mod bench { + use rand::rng; use rand::seq::SliceRandom; - use rand::thread_rng; use test::Bencher; use crate::collector::FacetCollector; @@ -846,7 +843,7 @@ mod bench { } } // 40425 docs - docs[..].shuffle(&mut thread_rng()); + docs[..].shuffle(&mut rng()); let mut index_writer: IndexWriter = index.writer_for_tests().unwrap(); for doc in docs { diff --git a/src/collector/sort_key_top_collector.rs b/src/collector/sort_key_top_collector.rs index 3ca27fc75..9ca47581b 100644 --- a/src/collector/sort_key_top_collector.rs +++ b/src/collector/sort_key_top_collector.rs @@ -160,7 +160,7 @@ mod tests { expected: &[(crate::Score, usize)], ) { let mut vals: Vec<(crate::Score, usize)> = (0..10).map(|val| (val as f32, val)).collect(); - vals.shuffle(&mut rand::thread_rng()); + vals.shuffle(&mut rand::rng()); let vals_merged = merge_top_k(vals.into_iter(), doc_range, ComparatorEnum::from(order)); assert_eq!(&vals_merged, expected); } diff --git a/src/fastfield/alive_bitset.rs b/src/fastfield/alive_bitset.rs index 11d7463c7..bbdc82a45 100644 --- a/src/fastfield/alive_bitset.rs +++ b/src/fastfield/alive_bitset.rs @@ -162,7 +162,7 @@ mod tests { mod bench { use rand::prelude::IteratorRandom; - use rand::thread_rng; + use rand::rng; use test::Bencher; use super::AliveBitSet; @@ -176,7 +176,7 @@ mod bench { } fn remove_rand(raw: &mut Vec) { - let i = (0..raw.len()).choose(&mut thread_rng()).unwrap(); + let i = (0..raw.len()).choose(&mut rng()).unwrap(); raw.remove(i); } diff --git a/src/fastfield/mod.rs b/src/fastfield/mod.rs index 726b9b76a..aca53c212 100644 --- a/src/fastfield/mod.rs +++ b/src/fastfield/mod.rs @@ -879,7 +879,7 @@ mod tests { const ONE_HOUR_IN_MICROSECS: i64 = 3_600 * 1_000_000; let times: Vec = std::iter::repeat_with(|| { // +- One hour. - let t = T0 + rng.gen_range(-ONE_HOUR_IN_MICROSECS..ONE_HOUR_IN_MICROSECS); + let t = T0 + rng.random_range(-ONE_HOUR_IN_MICROSECS..ONE_HOUR_IN_MICROSECS); DateTime::from_timestamp_micros(t) }) .take(1_000) diff --git a/src/functional_test.rs b/src/functional_test.rs index 1548d8096..9606bb7a7 100644 --- a/src/functional_test.rs +++ b/src/functional_test.rs @@ -1,6 +1,6 @@ use std::collections::HashSet; -use rand::{thread_rng, Rng}; +use rand::{rng, Rng}; use crate::indexer::index_writer::MEMORY_BUDGET_NUM_BYTES_MIN; use crate::schema::*; @@ -29,7 +29,7 @@ fn test_functional_store() -> crate::Result<()> { let index = Index::create_in_ram(schema); let reader = index.reader()?; - let mut rng = thread_rng(); + let mut rng = rng(); let mut index_writer: IndexWriter = index.writer_with_num_threads(3, 3 * MEMORY_BUDGET_NUM_BYTES_MIN)?; @@ -38,9 +38,9 @@ fn test_functional_store() -> crate::Result<()> { let mut doc_id = 0u64; for _iteration in 0..get_num_iterations() { - let num_docs: usize = rng.gen_range(0..4); + let num_docs: usize = rng.random_range(0..4); if !doc_set.is_empty() { - let doc_to_remove_id = rng.gen_range(0..doc_set.len()); + let doc_to_remove_id = rng.random_range(0..doc_set.len()); let removed_doc_id = doc_set.swap_remove(doc_to_remove_id); index_writer.delete_term(Term::from_field_u64(id_field, removed_doc_id)); } @@ -70,10 +70,10 @@ const LOREM: &str = "Doc Lorem ipsum dolor sit amet, consectetur adipiscing elit cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat \ non proident, sunt in culpa qui officia deserunt mollit anim id est laborum."; fn get_text() -> String { - use rand::seq::SliceRandom; - let mut rng = thread_rng(); + use rand::seq::IndexedRandom; + let mut rng = rng(); let tokens: Vec<_> = LOREM.split(' ').collect(); - let random_val = rng.gen_range(0..20); + let random_val = rng.random_range(0..20); (0..random_val) .map(|_| tokens.choose(&mut rng).unwrap()) @@ -101,7 +101,7 @@ fn test_functional_indexing_unsorted() -> crate::Result<()> { let index = Index::create_from_tempdir(schema)?; let reader = index.reader()?; - let mut rng = thread_rng(); + let mut rng = rng(); let mut index_writer: IndexWriter = index.writer_with_num_threads(3, 3 * MEMORY_BUDGET_NUM_BYTES_MIN)?; @@ -110,7 +110,7 @@ fn test_functional_indexing_unsorted() -> crate::Result<()> { let mut uncommitted_docs: HashSet = HashSet::new(); for _ in 0..get_num_iterations() { - let random_val = rng.gen_range(0..20); + let random_val = rng.random_range(0..20); if random_val == 0 { index_writer.commit()?; committed_docs.extend(&uncommitted_docs); diff --git a/src/lib.rs b/src/lib.rs index f0b3120a5..2747fe8ef 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -377,7 +377,7 @@ pub mod tests { use common::{BinarySerializable, FixedSize}; use query_grammar::{UserInputAst, UserInputLeaf, UserInputLiteral}; - use rand::distributions::{Bernoulli, Uniform}; + use rand::distr::{Bernoulli, Uniform}; use rand::rngs::StdRng; use rand::{Rng, SeedableRng}; use time::OffsetDateTime; @@ -428,7 +428,7 @@ pub mod tests { pub fn generate_nonunique_unsorted(max_value: u32, n_elems: usize) -> Vec { let seed: [u8; 32] = [1; 32]; StdRng::from_seed(seed) - .sample_iter(&Uniform::new(0u32, max_value)) + .sample_iter(&Uniform::new(0u32, max_value).unwrap()) .take(n_elems) .collect::>() } diff --git a/src/postings/compression/mod.rs b/src/postings/compression/mod.rs index 62eeca3d5..0ddf7e3df 100644 --- a/src/postings/compression/mod.rs +++ b/src/postings/compression/mod.rs @@ -397,7 +397,10 @@ mod bench { let mut seed: [u8; 32] = [0; 32]; seed[31] = seed_val; let mut rng = StdRng::from_seed(seed); - (0u32..).filter(|_| rng.gen_bool(ratio)).take(n).collect() + (0u32..) + .filter(|_| rng.random_bool(ratio)) + .take(n) + .collect() } pub fn generate_array(n: usize, ratio: f64) -> Vec { diff --git a/src/postings/mod.rs b/src/postings/mod.rs index b9c400859..d60ad597d 100644 --- a/src/postings/mod.rs +++ b/src/postings/mod.rs @@ -604,13 +604,13 @@ mod bench { let mut index_writer: IndexWriter = index.writer_for_tests().unwrap(); for _ in 0..posting_list_size { let mut doc = TantivyDocument::default(); - if rng.gen_bool(1f64 / 15f64) { + if rng.random_bool(1f64 / 15f64) { doc.add_text(text_field, "a"); } - if rng.gen_bool(1f64 / 10f64) { + if rng.random_bool(1f64 / 10f64) { doc.add_text(text_field, "b"); } - if rng.gen_bool(1f64 / 5f64) { + if rng.random_bool(1f64 / 5f64) { doc.add_text(text_field, "c"); } doc.add_text(text_field, "d"); diff --git a/src/query/phrase_query/regex_phrase_weight.rs b/src/query/phrase_query/regex_phrase_weight.rs index 4e850d2e2..9cefc555a 100644 --- a/src/query/phrase_query/regex_phrase_weight.rs +++ b/src/query/phrase_query/regex_phrase_weight.rs @@ -311,7 +311,7 @@ mod tests { #![proptest_config(ProptestConfig::with_cases(50))] #[test] fn test_phrase_regex_with_random_strings(mut random_strings in proptest::collection::vec("[c-z ]{0,10}", 1..100), num_occurrences in 1..150_usize) { - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); // Insert "aaa ccc" the specified number of times into the list for _ in 0..num_occurrences { diff --git a/src/query/range_query/range_query.rs b/src/query/range_query/range_query.rs index 1893a06a5..a597c8dca 100644 --- a/src/query/range_query/range_query.rs +++ b/src/query/range_query/range_query.rs @@ -429,7 +429,7 @@ mod tests { docs.push(doc); } - docs.shuffle(&mut rand::thread_rng()); + docs.shuffle(&mut rand::rng()); let mut docs_it = docs.into_iter(); for doc in (&mut docs_it).take(50) { index_writer.add_document(doc)?; diff --git a/src/query/range_query/range_query_fastfield.rs b/src/query/range_query/range_query_fastfield.rs index e379e108e..68da73c92 100644 --- a/src/query/range_query/range_query_fastfield.rs +++ b/src/query/range_query/range_query_fastfield.rs @@ -491,7 +491,7 @@ mod tests { use common::DateTime; use proptest::prelude::*; use rand::rngs::StdRng; - use rand::seq::SliceRandom; + use rand::seq::IndexedRandom; use rand::SeedableRng; use time::format_description::well_known::Rfc3339; use time::OffsetDateTime; diff --git a/src/query/term_query/term_scorer.rs b/src/query/term_query/term_scorer.rs index 00fb8ca0b..6c7c5b17a 100644 --- a/src/query/term_query/term_scorer.rs +++ b/src/query/term_query/term_scorer.rs @@ -304,10 +304,10 @@ mod tests { let mut writer: IndexWriter = index.writer_with_num_threads(3, 3 * MEMORY_BUDGET_NUM_BYTES_MIN)?; use rand::Rng; - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); writer.set_merge_policy(Box::new(NoMergePolicy)); for _ in 0..3_000 { - let term_freq = rng.gen_range(1..10000); + let term_freq = rng.random_range(1..10000); let words: Vec<&str> = std::iter::repeat_n("bbbb", term_freq).collect(); let text = words.join(" "); writer.add_document(doc!(text_field=>text))?; diff --git a/src/termdict/fst_termdict/merger.rs b/src/termdict/fst_termdict/merger.rs index e8a064deb..43147a5ae 100644 --- a/src/termdict/fst_termdict/merger.rs +++ b/src/termdict/fst_termdict/merger.rs @@ -95,7 +95,7 @@ impl<'a> TermMerger<'a> { #[cfg(all(test, feature = "unstable"))] mod bench { use rand::distributions::Alphanumeric; - use rand::{thread_rng, Rng}; + use rand::{rng, Rng}; use test::{self, Bencher}; use super::TermMerger; @@ -117,9 +117,9 @@ mod bench { let buffer: Vec = { let mut terms = vec![]; for _i in 0..num_terms { - let rand_string: String = thread_rng() + let rand_string: String = rng() .sample_iter(&Alphanumeric) - .take(thread_rng().gen_range(30..42)) + .take(rng().random_range(30..42)) .map(char::from) .collect(); terms.push(rand_string); diff --git a/sstable/Cargo.toml b/sstable/Cargo.toml index 7b353cece..813692e26 100644 --- a/sstable/Cargo.toml +++ b/sstable/Cargo.toml @@ -25,7 +25,7 @@ zstd-compression = ["zstd"] proptest = "1" criterion = { version = "0.5", default-features = false } names = "0.14" -rand = "0.8" +rand = "0.9" [[bench]] name = "stream_bench" diff --git a/sstable/benches/stream_bench.rs b/sstable/benches/stream_bench.rs index cffe41e26..70dcdd8e3 100644 --- a/sstable/benches/stream_bench.rs +++ b/sstable/benches/stream_bench.rs @@ -10,9 +10,9 @@ use tantivy_sstable::{Dictionary, MonotonicU64SSTable}; const CHARSET: &[u8] = b"abcdefghij"; fn generate_key(rng: &mut impl Rng) -> String { - let len = rng.gen_range(3..12); + let len = rng.random_range(3..12); std::iter::from_fn(|| { - let idx = rng.gen_range(0..CHARSET.len()); + let idx = rng.random_range(0..CHARSET.len()); Some(CHARSET[idx] as char) }) .take(len) diff --git a/stacker/Cargo.toml b/stacker/Cargo.toml index 38b293dff..81388bdfd 100644 --- a/stacker/Cargo.toml +++ b/stacker/Cargo.toml @@ -23,12 +23,12 @@ name = "hashmap" path = "example/hashmap.rs" [dev-dependencies] -rand = "0.8.5" +rand = "0.9" zipf = "7.0.0" rustc-hash = "2.1.0" proptest = "1.2.0" binggan = { version = "0.14.0" } -rand_distr = "0.4.3" +rand_distr = "0.5" [features] compare_hash_only = ["ahash"] # Compare hash only, not the key in the Hashmap diff --git a/stacker/benches/bench.rs b/stacker/benches/bench.rs index ed5ea5eeb..03f801308 100644 --- a/stacker/benches/bench.rs +++ b/stacker/benches/bench.rs @@ -90,10 +90,10 @@ fn bench_vint() { } // benchmark zipfs distribution numbers { - use rand::distributions::Distribution; + use rand::distr::Distribution; use rand::rngs::StdRng; let mut rng = StdRng::from_seed([3u8; 32]); - let zipf = zipf::ZipfDistribution::new(10_000, 1.03).unwrap(); + let zipf = rand_distr::Zipf::new(10_000.0f64, 1.03).unwrap(); let numbers: Vec<[u8; 8]> = (0..num_numbers) .map(|_| zipf.sample(&mut rng).to_le_bytes()) .collect(); diff --git a/stacker/fuzz_test/Cargo.toml b/stacker/fuzz_test/Cargo.toml index 02478c95b..f71b36a37 100644 --- a/stacker/fuzz_test/Cargo.toml +++ b/stacker/fuzz_test/Cargo.toml @@ -7,8 +7,8 @@ edition = "2021" [dependencies] ahash = "0.8.7" -rand = "0.8.5" -rand_distr = "0.4.3" +rand = "0.9" +rand_distr = "0.5" tantivy-stacker = { version = "0.2.0", path = ".." } [workspace] diff --git a/stacker/fuzz_test/src/main.rs b/stacker/fuzz_test/src/main.rs index 2367ddc33..efe72d921 100644 --- a/stacker/fuzz_test/src/main.rs +++ b/stacker/fuzz_test/src/main.rs @@ -14,7 +14,7 @@ fn test_with_seed(seed: u64) { let mut hash_map = AHashMap::new(); let mut arena_hashmap = ArenaHashMap::default(); let mut rng = StdRng::seed_from_u64(seed); - let key_count = rng.gen_range(1_000..=1_000_000); + let key_count = rng.random_range(1_000..=1_000_000); let exp = Exp::new(0.05).unwrap(); for _ in 0..key_count {