From fe6443a2b06ffec8dfd11c4314ca7cc33d4b9308 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?19=E5=B9=B4=E6=A2=A6=E9=86=92?= <3949379+getong@users.noreply.github.com> Date: Sun, 2 Mar 2025 04:17:16 +0800 Subject: [PATCH] update rand to 0.9 --- Cargo.lock | 60 ++++++++++++++------ Cargo.toml | 4 +- crates/anvil/core/src/eth/subscription.rs | 4 +- crates/anvil/src/cmd.rs | 2 +- crates/anvil/src/config.rs | 4 +- crates/cast/bin/cmd/wallet/mod.rs | 8 +-- crates/cast/bin/cmd/wallet/vanity.rs | 2 +- crates/evm/fuzz/src/strategies/invariants.rs | 2 +- crates/test-utils/src/rpc.rs | 12 ++-- 9 files changed, 63 insertions(+), 35 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 191b240d85b6a..17003a14d72e4 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -152,7 +152,7 @@ dependencies = [ "derive_arbitrary", "derive_more", "itoa", - "proptest", + "proptest 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde", "serde_json", "winnow 0.7.3", @@ -336,7 +336,7 @@ dependencies = [ "k256", "keccak-asm", "paste", - "proptest", + "proptest 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "proptest-derive", "rand 0.8.5", "ruint", @@ -1015,7 +1015,7 @@ dependencies = [ "op-alloy-consensus", "op-alloy-rpc-types", "parking_lot", - "rand 0.8.5", + "rand 0.9.0", "revm", "serde", "serde_json", @@ -1048,7 +1048,7 @@ dependencies = [ "foundry-common", "foundry-evm", "op-alloy-consensus", - "rand 0.8.5", + "rand 0.9.0", "revm", "serde", "serde_json", @@ -2075,7 +2075,7 @@ dependencies = [ "futures", "indicatif", "itertools 0.14.0", - "rand 0.8.5", + "rand 0.9.0", "rayon", "regex", "rpassword", @@ -2482,7 +2482,7 @@ dependencies = [ "cfg-if", "cpufeatures", "hex", - "proptest", + "proptest 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde", ] @@ -3416,7 +3416,7 @@ dependencies = [ "parking_lot", "paste", "path-slash", - "proptest", + "proptest 1.6.0 (git+https://github.com/getong/proptest?branch=update-rand-0.9)", "quick-junit", "rayon", "regex", @@ -3659,8 +3659,8 @@ dependencies = [ "memchr", "p256", "parking_lot", - "proptest", - "rand 0.8.5", + "proptest 1.6.0 (git+https://github.com/getong/proptest?branch=update-rand-0.9)", + "rand 0.9.0", "revm", "revm-inspectors", "semver 1.0.25", @@ -3978,7 +3978,7 @@ dependencies = [ "foundry-evm-traces", "indicatif", "parking_lot", - "proptest", + "proptest 1.6.0 (git+https://github.com/getong/proptest?branch=update-rand-0.9)", "revm", "revm-inspectors", "serde", @@ -4064,8 +4064,8 @@ dependencies = [ "foundry-evm-traces", "itertools 0.14.0", "parking_lot", - "proptest", - "rand 0.8.5", + "proptest 1.6.0 (git+https://github.com/getong/proptest?branch=update-rand-0.9)", + "rand 0.9.0", "revm", "serde", "thiserror 2.0.11", @@ -4156,7 +4156,7 @@ dependencies = [ "foundry-compilers", "foundry-config", "parking_lot", - "rand 0.8.5", + "rand 0.9.0", "regex", "serde_json", "snapbox", @@ -6259,7 +6259,7 @@ checksum = "8983bb634df7248924ee0c4c3a749609b5abcb082c28fffe3254b3eb3602b307" dependencies = [ "alloy-rlp", "const-hex", - "proptest", + "proptest 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "serde", "smallvec", ] @@ -6905,7 +6905,26 @@ dependencies = [ "num-traits", "rand 0.8.5", "rand_chacha 0.3.1", - "rand_xorshift", + "rand_xorshift 0.3.0", + "regex-syntax 0.8.5", + "rusty-fork", + "tempfile", + "unarray", +] + +[[package]] +name = "proptest" +version = "1.6.0" +source = "git+https://github.com/getong/proptest?branch=update-rand-0.9#b5cc7b8f48f88764c7ff361d3366e4d8d58efcf5" +dependencies = [ + "bit-set 0.8.0", + "bit-vec 0.8.0", + "bitflags 2.8.0", + "lazy_static", + "num-traits", + "rand 0.9.0", + "rand_chacha 0.9.0", + "rand_xorshift 0.4.0", "regex-syntax 0.8.5", "rusty-fork", "tempfile", @@ -7180,6 +7199,15 @@ dependencies = [ "rand_core 0.6.4", ] +[[package]] +name = "rand_xorshift" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "513962919efc330f829edb2535844d1b912b0fbe2ca165d613e4e8788bb05a5a" +dependencies = [ + "rand_core 0.9.2", +] + [[package]] name = "ratatui" version = "0.29.0" @@ -7533,7 +7561,7 @@ dependencies = [ "num-traits", "parity-scale-codec", "primitive-types", - "proptest", + "proptest 1.6.0 (registry+https://github.com/rust-lang/crates.io-index)", "rand 0.8.5", "rlp", "ruint-macro", diff --git a/Cargo.toml b/Cargo.toml index 996fd770a206a..3b7fd6e1d42c5 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -288,8 +288,8 @@ k256 = "0.13" mesc = "0.3" num-format = "0.4" parking_lot = "0.12" -proptest = "1" -rand = "0.8" +proptest = { git = "https://github.com/getong/proptest", branch = "update-rand-0.9" } +rand = "0.9" rayon = "1" regex = { version = "1", default-features = false } reqwest = { version = "0.12", default-features = false, features = [ diff --git a/crates/anvil/core/src/eth/subscription.rs b/crates/anvil/core/src/eth/subscription.rs index 9d347e9a60333..0f3194a2a312c 100644 --- a/crates/anvil/core/src/eth/subscription.rs +++ b/crates/anvil/core/src/eth/subscription.rs @@ -1,6 +1,6 @@ //! Subscription types use alloy_primitives::hex; -use rand::{distributions::Alphanumeric, thread_rng, Rng}; +use rand::{distributions::Alphanumeric, rng, Rng}; use std::fmt; /// Unique subscription id @@ -49,7 +49,7 @@ impl HexIdProvider { /// Generates a random hex encoded Id pub fn gen(&self) -> String { let id: String = - (&mut thread_rng()).sample_iter(Alphanumeric).map(char::from).take(self.len).collect(); + (&mut rng()).sample_iter(Alphanumeric).map(char::from).take(self.len).collect(); let out = hex::encode(id); format!("0x{out}") } diff --git a/crates/anvil/src/cmd.rs b/crates/anvil/src/cmd.rs index 0bf102e186b85..bc9bb68c17731 100644 --- a/crates/anvil/src/cmd.rs +++ b/crates/anvil/src/cmd.rs @@ -282,7 +282,7 @@ impl NodeArgs { if let Some(ref mnemonic) = self.mnemonic { gen = gen.phrase(mnemonic); } else if let Some(count) = self.mnemonic_random { - let mut rng = rand::thread_rng(); + let mut rng = rand::rng(); let mnemonic = match Mnemonic::::new_with_count(&mut rng, count) { Ok(mnemonic) => mnemonic.to_phrase(), Err(_) => DEFAULT_MNEMONIC.to_string(), diff --git a/crates/anvil/src/config.rs b/crates/anvil/src/config.rs index 9b0eaa56e088c..6358fe19d2345 100644 --- a/crates/anvil/src/config.rs +++ b/crates/anvil/src/config.rs @@ -42,7 +42,7 @@ use foundry_evm::{ }; use itertools::Itertools; use parking_lot::RwLock; -use rand::thread_rng; +use rand::rng; use revm::primitives::BlobExcessGasAndPrice; use serde_json::{json, Value}; use std::{ @@ -1444,7 +1444,7 @@ impl AccountGenerator { Self { chain_id: CHAIN_ID, amount, - phrase: Mnemonic::::new(&mut thread_rng()).to_phrase(), + phrase: Mnemonic::::new(&mut rng()).to_phrase(), derivation_path: None, } } diff --git a/crates/cast/bin/cmd/wallet/mod.rs b/crates/cast/bin/cmd/wallet/mod.rs index 57fee70cbad7d..5bf9a3e7ba4ec 100644 --- a/crates/cast/bin/cmd/wallet/mod.rs +++ b/crates/cast/bin/cmd/wallet/mod.rs @@ -14,7 +14,7 @@ use foundry_cli::{opts::RpcOpts, utils, utils::LoadConfig}; use foundry_common::{fs, sh_println, shell}; use foundry_config::Config; use foundry_wallets::{RawWalletOpts, WalletOpts, WalletSigner}; -use rand::thread_rng; +use rand::rng; use serde_json::json; use std::path::Path; use yansi::Paint; @@ -232,7 +232,7 @@ impl WalletSubcommands { pub async fn run(self) -> Result<()> { match self { Self::New { path, account_name, unsafe_password, number, .. } => { - let mut rng = thread_rng(); + let mut rng = rng(); let mut json_values = if shell::is_json() { Some(vec![]) } else { None }; if let Some(path) = path { @@ -316,7 +316,7 @@ impl WalletSubcommands { let entropy = Entropy::from_slice(hex::decode(entropy)?)?; Mnemonic::::new_from_entropy(entropy).to_phrase() } else { - let mut rng = thread_rng(); + let mut rng = rng(); Mnemonic::::new_with_count(&mut rng, words)?.to_phrase() }; @@ -465,7 +465,7 @@ flag to set your key via: rpassword::prompt_password("Enter password: ")? }; - let mut rng = thread_rng(); + let mut rng = rng(); let (wallet, _) = PrivateKeySigner::encrypt_keystore( dir, &mut rng, diff --git a/crates/cast/bin/cmd/wallet/vanity.rs b/crates/cast/bin/cmd/wallet/vanity.rs index 2137feb42b31d..5c78066fe01d2 100644 --- a/crates/cast/bin/cmd/wallet/vanity.rs +++ b/crates/cast/bin/cmd/wallet/vanity.rs @@ -221,7 +221,7 @@ pub fn wallet_generator() -> iter::Map, impl Fn(()) -> Generate /// Generates a random K-256 signing key and derives its Ethereum address. pub fn generate_wallet() -> GeneratedWallet { - let key = SigningKey::random(&mut rand::thread_rng()); + let key = SigningKey::random(&mut rand::rng()); let address = secret_key_to_address(&key); (key, address) } diff --git a/crates/evm/fuzz/src/strategies/invariants.rs b/crates/evm/fuzz/src/strategies/invariants.rs index c7d04dd1ab02a..0f5fde4221c3a 100644 --- a/crates/evm/fuzz/src/strategies/invariants.rs +++ b/crates/evm/fuzz/src/strategies/invariants.rs @@ -34,7 +34,7 @@ pub fn override_call_strat( // Choose a random contract if target selected by lazy strategy is not in fuzz run // identified contracts. This can happen when contract is created in `setUp` call // but is not included in targetContracts. - contracts.values().choose(&mut rand::thread_rng()).unwrap() + contracts.values().choose(&mut rand::rng()).unwrap() }); let fuzzed_functions: Vec<_> = contract.abi_fuzzed_functions().cloned().collect(); any::().prop_map(move |index| index.get(&fuzzed_functions).clone()) diff --git a/crates/test-utils/src/rpc.rs b/crates/test-utils/src/rpc.rs index 1c30269a290a2..549bd5a51c73c 100644 --- a/crates/test-utils/src/rpc.rs +++ b/crates/test-utils/src/rpc.rs @@ -1,7 +1,7 @@ //! RPC API keys utilities. use foundry_config::{NamedChain, NamedChain::Optimism}; -use rand::seq::SliceRandom; +use rand::seq::{IndexedRandom, SliceRandom}; use std::{ env, sync::{ @@ -26,7 +26,7 @@ static INFURA_KEYS: LazyLock> = LazyLock::new(|| { // "5c812e02193c4ba793f8c214317582bd", ]; - keys.shuffle(&mut rand::thread_rng()); + keys.shuffle(&mut rand::rng()); keys }); @@ -62,7 +62,7 @@ static ALCHEMY_KEYS: LazyLock> = LazyLock::new(|| { // "UVatYU2Ax0rX6bDiqddeTRDdcCxzdpoE", "bVjX9v-FpmUhf5R_oHIgwJx2kXvYPRbx", ]; - keys.shuffle(&mut rand::thread_rng()); + keys.shuffle(&mut rand::rng()); keys }); @@ -82,7 +82,7 @@ static ETHERSCAN_MAINNET_KEYS: LazyLock> = LazyLock::new(|| { // Optimism // "JQNGFHINKS1W7Y5FRXU4SPBYF43J3NYK46", ]; - keys.shuffle(&mut rand::thread_rng()); + keys.shuffle(&mut rand::rng()); keys }); @@ -143,7 +143,7 @@ fn next_archive_url(is_ws: bool) -> String { let url = if env_archive_urls(is_ws).is_empty() { next(urls) } else { - urls.choose_weighted(&mut rand::thread_rng(), |url| { + urls.choose_weighted(&mut rand::rng(), |url| { if url.contains("reth") { 2usize } else { @@ -164,7 +164,7 @@ fn archive_urls(is_ws: bool) -> &'static [String] { let env_urls = env_archive_urls(is_ws); if !env_urls.is_empty() { let mut urls = env_urls.to_vec(); - urls.shuffle(&mut rand::thread_rng()); + urls.shuffle(&mut rand::rng()); return urls; }