diff --git a/.cargo/config.toml b/.cargo/config.toml index a7bd7f9..6c86c0d 100644 --- a/.cargo/config.toml +++ b/.cargo/config.toml @@ -3,3 +3,6 @@ linker = "aarch64-linux-gnu-gcc" [target.armv7-unknown-linux-gnueabihf] linker = "arm-linux-gnu-gcc" + +[env] +CARGO_WORKSPACE_DIR = { value = "", relative = true } diff --git a/Cargo.lock b/Cargo.lock index 6bb3822..b27ea1b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -157,6 +157,17 @@ version = "1.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd" +[[package]] +name = "chacha20" +version = "0.10.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6f8d983286843e49675a4b7a2d174efe136dc93a18d69130dd18198a6c167601" +dependencies = [ + "cfg-if", + "cpufeatures", + "rand_core", +] + [[package]] name = "chess" version = "1.0.0" @@ -300,6 +311,15 @@ version = "0.8.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" +[[package]] +name = "cpufeatures" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8b2a41393f66f16b0823bb79094d54ac5fbd34ab292ddafb9a0456ac9f87d201" +dependencies = [ + "libc", +] + [[package]] name = "criterion" version = "0.8.2" @@ -441,6 +461,12 @@ dependencies = [ "uci-parser", ] +[[package]] +name = "equivalent" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "877a4ace8713b0bcf2a4e7eec82529c029f1d0619886d18145fea96c3ffe5c0f" + [[package]] name = "find-msvc-tools" version = "0.1.5" @@ -453,6 +479,12 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" +[[package]] +name = "foldhash" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d9c4f5dac5e15c24eb999c26181a6ca40b39fe946cbe4c263c7209467bc83af2" + [[package]] name = "form_urlencoded" version = "1.2.2" @@ -469,20 +501,21 @@ dependencies = [ "anyhow", "chess", "rand", - "rand_chacha", "thiserror 2.0.18", ] [[package]] name = "getrandom" -version = "0.3.1" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" +checksum = "139ef39800118c7683f2fd3c98c1b23c09ae076556b435f8e9064ae108aaeeec" dependencies = [ "cfg-if", "libc", - "wasi", - "windows-targets", + "r-efi", + "rand_core", + "wasip2", + "wasip3", ] [[package]] @@ -508,6 +541,21 @@ dependencies = [ "crunchy", ] +[[package]] +name = "hashbrown" +version = "0.15.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9229cfe53dfd69f0609a49f65461bd93001ea1ef889cd5529dd176593f5338a1" +dependencies = [ + "foldhash", +] + +[[package]] +name = "hashbrown" +version = "0.16.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "841d1cc9bed7f9236f321df977030373f4a4163ae1a7dbfe1a51a2c1a51d9100" + [[package]] name = "hce-tuner" version = "0.1.0" @@ -632,6 +680,12 @@ dependencies = [ "zerovec", ] +[[package]] +name = "id-arena" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d3067d79b975e8844ca9eb072e16b31c3c1c36928edf9c6789548c524d0d954" + [[package]] name = "idna" version = "1.1.0" @@ -653,6 +707,18 @@ dependencies = [ "icu_properties", ] +[[package]] +name = "indexmap" +version = "2.13.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7714e70437a7dc3ac8eb7e6f8df75fd8eb422675fc7678aff7364301092b1017" +dependencies = [ + "equivalent", + "hashbrown 0.16.1", + "serde", + "serde_core", +] + [[package]] name = "indicatif" version = "0.18.3" @@ -728,6 +794,12 @@ version = "1.5.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbd2bcb4c963f2ddae06a2efc7e9f3591312473c50c6685e1f298068316e66fe" +[[package]] +name = "leb128fmt" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09edd9e8b54e49e587e4f6295a7d29c3ea94d469cb40ab8ca70b288248a81db2" + [[package]] name = "libc" version = "0.2.177" @@ -909,12 +981,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" [[package]] -name = "ppv-lite86" -version = "0.2.21" +name = "prettyplease" +version = "0.2.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ - "zerocopy", + "proc-macro2", + "syn", ] [[package]] @@ -936,33 +1009,27 @@ dependencies = [ ] [[package]] -name = "rand" -version = "0.9.2" +name = "r-efi" +version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6db2770f06117d490610c7488547d543617b21bfa07796d7a12f6f1bd53850d1" -dependencies = [ - "rand_chacha", - "rand_core", -] +checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" [[package]] -name = "rand_chacha" -version = "0.9.0" +name = "rand" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" +checksum = "bc266eb313df6c5c09c1c7b1fbe2510961e5bcd3add930c1e31f7ed9da0feff8" dependencies = [ - "ppv-lite86", + "chacha20", + "getrandom", "rand_core", ] [[package]] name = "rand_core" -version = "0.9.3" +version = "0.10.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" -dependencies = [ - "getrandom", -] +checksum = "0c8d0fd677905edcbeedbf2edb6494d676f0e98d54d5cf9bda0b061cb8fb8aba" [[package]] name = "rayon" @@ -1043,6 +1110,12 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "semver" +version = "1.0.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" + [[package]] name = "serde" version = "1.0.228" @@ -1362,12 +1435,21 @@ dependencies = [ ] [[package]] -name = "wasi" -version = "0.13.3+wasi-0.2.2" +name = "wasip2" +version = "1.0.2+wasi-0.2.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "26816d2e1a4a36a2940b96c5296ce403917633dff8f3440e9b236ed6f6bacad2" +checksum = "9517f9239f02c069db75e65f174b3da828fe5f5b945c4dd26bd25d89c03ebcf5" dependencies = [ - "wit-bindgen-rt", + "wit-bindgen", +] + +[[package]] +name = "wasip3" +version = "0.4.0+wasi-0.3.0-rc-2026-01-06" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5428f8bf88ea5ddc08faddef2ac4a67e390b88186c703ce6dbd955e1c145aca5" +dependencies = [ + "wit-bindgen", ] [[package]] @@ -1428,6 +1510,40 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "wasm-encoder" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" +dependencies = [ + "leb128fmt", + "wasmparser", +] + +[[package]] +name = "wasm-metadata" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" +dependencies = [ + "anyhow", + "indexmap", + "wasm-encoder", + "wasmparser", +] + +[[package]] +name = "wasmparser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "47b807c72e1bac69382b3a6fb3dbe8ea4c0ed87ff5629b8685ae6b9a611028fe" +dependencies = [ + "bitflags", + "hashbrown 0.15.5", + "indexmap", + "semver", +] + [[package]] name = "web-sys" version = "0.3.77" @@ -1621,12 +1737,91 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "589f6da84c646204747d1270a2a5661ea66ed1cced2631d546fdfb155959f9ec" [[package]] -name = "wit-bindgen-rt" -version = "0.33.0" +name = "wit-bindgen" +version = "0.51.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3268f3d866458b787f390cf61f4bbb563b922d091359f9608842999eaee3943c" +checksum = "d7249219f66ced02969388cf2bb044a09756a083d0fab1e566056b04d9fbcaa5" dependencies = [ + "wit-bindgen-rust-macro", +] + +[[package]] +name = "wit-bindgen-core" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ea61de684c3ea68cb082b7a88508a8b27fcc8b797d738bfc99a82facf1d752dc" +dependencies = [ + "anyhow", + "heck", + "wit-parser", +] + +[[package]] +name = "wit-bindgen-rust" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b7c566e0f4b284dd6561c786d9cb0142da491f46a9fbed79ea69cdad5db17f21" +dependencies = [ + "anyhow", + "heck", + "indexmap", + "prettyplease", + "syn", + "wasm-metadata", + "wit-bindgen-core", + "wit-component", +] + +[[package]] +name = "wit-bindgen-rust-macro" +version = "0.51.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0c0f9bfd77e6a48eccf51359e3ae77140a7f50b1e2ebfe62422d8afdaffab17a" +dependencies = [ + "anyhow", + "prettyplease", + "proc-macro2", + "quote", + "syn", + "wit-bindgen-core", + "wit-bindgen-rust", +] + +[[package]] +name = "wit-component" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d66ea20e9553b30172b5e831994e35fbde2d165325bec84fc43dbf6f4eb9cb2" +dependencies = [ + "anyhow", "bitflags", + "indexmap", + "log", + "serde", + "serde_derive", + "serde_json", + "wasm-encoder", + "wasm-metadata", + "wasmparser", + "wit-parser", +] + +[[package]] +name = "wit-parser" +version = "0.244.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecc8ac4bc1dc3381b7f59c34f00b67e18f910c2c0f50015669dde7def656a736" +dependencies = [ + "anyhow", + "id-arena", + "indexmap", + "log", + "semver", + "serde", + "serde_derive", + "serde_json", + "unicode-xid", + "wasmparser", ] [[package]] @@ -1658,26 +1853,6 @@ dependencies = [ "synstructure", ] -[[package]] -name = "zerocopy" -version = "0.8.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fd97444d05a4328b90e75e503a34bad781f14e28a823ad3557f0750df1ebcbc6" -dependencies = [ - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.8.23" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6352c01d0edd5db859a63e2605f4ea3183ddbd15e2c4a9e7d32184df75e4f154" -dependencies = [ - "proc-macro2", - "quote", - "syn", -] - [[package]] name = "zerofrom" version = "0.1.6" diff --git a/Cargo.toml b/Cargo.toml index 7cacbc7..4e67f78 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -20,8 +20,7 @@ csv = "1.4.0" engine = { path = "engine" } indicatif = "0.18.3" itertools = "0.14.0" -rand = "0.9.2" -rand_chacha = "0.9.0" +rand = "0.10.0" rayon = "1.11.0" serde = "1.0.228" textplots = "0.8.7" diff --git a/chess/Cargo.toml b/chess/Cargo.toml index aa6ab23..6d45117 100644 --- a/chess/Cargo.toml +++ b/chess/Cargo.toml @@ -10,7 +10,7 @@ test = true [dependencies] anyhow = { workspace = true } arrayvec = { workspace = true } -rand = { workspace = true, features = ["small_rng"] } +rand = { workspace = true } serde = { workspace = true, features = ["derive"] } thiserror = { workspace = true } diff --git a/chess/src/zobrist.rs b/chess/src/zobrist.rs index 20792bf..eec681e 100644 --- a/chess/src/zobrist.rs +++ b/chess/src/zobrist.rs @@ -3,8 +3,7 @@ // GNU General Public License v3.0 or later // https://www.gnu.org/licenses/gpl-3.0-standalone.html -use rand::rngs::StdRng; -use rand::{Rng, SeedableRng}; +use rand::{Rng, SeedableRng, rngs::StdRng}; use crate::definitions::NumberOf; @@ -55,24 +54,24 @@ impl ZobristRandomValues { .for_each(|piece_values| { piece_values.iter_mut().for_each(|square_values| { square_values.iter_mut().for_each(|value| { - *value = random.random(); + *value = random.next_u64(); }); }); }); random_values.castling_values.iter_mut().for_each(|value| { - *value = random.random(); + *value = random.next_u64(); }); random_values .en_passant_values .iter_mut() .for_each(|value| { - *value = random.random(); + *value = random.next_u64(); }); random_values.side_values.iter_mut().for_each(|value| { - *value = random.random(); + *value = random.next_u64(); }); random_values diff --git a/engine/Cargo.toml b/engine/Cargo.toml index 3d9b6e4..cc91035 100644 --- a/engine/Cargo.toml +++ b/engine/Cargo.toml @@ -9,5 +9,5 @@ chess = { workspace = true } anyhow = { workspace = true } itertools = { workspace = true } uci-parser = { workspace = true, features = ["parse-go-perft", "parse-position-kiwipete", "types", "clamp-negatives"] } -rand = { workspace = true, features = ["small_rng"] } +rand = { workspace = true } arrayvec = { workspace = true } diff --git a/engine/src/ttable.rs b/engine/src/ttable.rs index cb9251e..ad1445d 100644 --- a/engine/src/ttable.rs +++ b/engine/src/ttable.rs @@ -193,7 +193,7 @@ mod tests { fn get_index() { let tt = TranspositionTable::from_size_in_mb(32); let mut rng = rand::rng(); - let random_numbers: Vec = (0..tt.size()).map(|_| rng.random::()).collect(); + let random_numbers: Vec = (0..tt.size()).map(|_| rng.next_u64()).collect(); let min = random_numbers.iter().min().unwrap(); let max = random_numbers.iter().max().unwrap(); println!("min/max random number: {min}/{max}"); diff --git a/tools/generate-magics/Cargo.toml b/tools/generate-magics/Cargo.toml index 08785bc..8ef39ef 100644 --- a/tools/generate-magics/Cargo.toml +++ b/tools/generate-magics/Cargo.toml @@ -9,8 +9,7 @@ repository = { workspace = true } [dependencies] chess = { workspace = true } anyhow = { workspace = true } -rand = { workspace = true, features = ["small_rng"] } -rand_chacha = { workspace = true } +rand = { workspace = true } thiserror = { workspace = true } [[bin]] diff --git a/tools/generate-magics/src/main.rs b/tools/generate-magics/src/main.rs index 7e07a17..4d69d87 100644 --- a/tools/generate-magics/src/main.rs +++ b/tools/generate-magics/src/main.rs @@ -13,8 +13,7 @@ use chess::{ move_generation::MoveGenerator, pieces::{Piece, SQUARE_NAME}, }; -use rand::{Rng, SeedableRng}; -use rand_chacha::ChaChaRng; +use rand::prelude::*; use thiserror::Error; #[derive(Error, Debug)] @@ -96,7 +95,7 @@ fn try_to_make_table( } fn find_magic_numbers(piece: Piece) -> Vec { - let mut rng = ChaChaRng::from_os_rng(); + let mut rng = rand::rng(); let mut magic_numbers = Vec::with_capacity(NumberOf::SQUARES); assert!(piece == Piece::Rook || piece == Piece::Bishop); diff --git a/tools/verify-zobrist/src/main.rs b/tools/verify-zobrist/src/main.rs index bcad5ee..157617f 100644 --- a/tools/verify-zobrist/src/main.rs +++ b/tools/verify-zobrist/src/main.rs @@ -57,7 +57,7 @@ fn decompress_data(output_data_path: &Path, compressed_data_path: &Path) -> anyh fn main() { // load data - let mut data_path = PathBuf::from(env!("CARGO_MANIFEST_DIR")); + let mut data_path = PathBuf::from(env!("CARGO_WORKSPACE_DIR")); data_path.push("data/lichess_db_puzzle.csv"); if !data_path.exists() { println!("Data file not found, decompressing from .zst file...");