From 29aba2748b00dd42cbcffcfbb4e7a40a981ca944 Mon Sep 17 00:00:00 2001 From: Joshua Goins Date: Fri, 2 May 2025 23:06:59 -0400 Subject: [PATCH] Switch out rand crate with fastrand It's just smaller, the less crates we compile the better. --- Cargo.lock | 105 ++++-------------------------------------- Cargo.toml | 2 +- src/login/database.rs | 11 ++--- src/world/database.rs | 4 +- 4 files changed, 14 insertions(+), 108 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 07bbf8f..122661d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -375,6 +375,12 @@ version = "0.1.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7360491ce676a36bf9bb3c56c1aa791658183a54d2744120f27285738d90465a" +[[package]] +name = "fastrand" +version = "2.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" + [[package]] name = "flate2" version = "1.1.1" @@ -440,18 +446,6 @@ dependencies = [ "slab", ] -[[package]] -name = "getrandom" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73fea8450eea4bac3940448fb7ae50d91f034f941199fcd9d909a5a07aa455f0" -dependencies = [ - "cfg-if", - "libc", - "r-efi", - "wasi 0.14.2+wasi-0.2.4", -] - [[package]] name = "gimli" version = "0.31.1" @@ -751,11 +745,11 @@ dependencies = [ "axum-extra", "binrw", "bitflags 1.3.2", + "fastrand", "md5", "minijinja", "mlua", "physis", - "rand", "reqwest", "rkon", "rusqlite", @@ -912,7 +906,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2886843bf800fba2e3377cff24abf6379b4c4d5c6681eaf9ea5b0d15090450bd" dependencies = [ "libc", - "wasi 0.11.0+wasi-snapshot-preview1", + "wasi", "windows-sys 0.52.0", ] @@ -1068,15 +1062,6 @@ version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "439ee305def115ba05938db6eb1644ff94165c5ab5e9420d1c1bcedbba909391" -[[package]] -name = "ppv-lite86" -version = "0.2.21" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "85eae3c4ed2f50dcfe72643da4befc30deadb458a9b590d720cde2f2b1e97da9" -dependencies = [ - "zerocopy", -] - [[package]] name = "proc-macro2" version = "1.0.95" @@ -1095,42 +1080,6 @@ dependencies = [ "proc-macro2", ] -[[package]] -name = "r-efi" -version = "5.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "74765f6d916ee2faa39bc8e68e4f3ed8949b48cccdac59983d287a7cb71ce9c5" - -[[package]] -name = "rand" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3779b94aeb87e8bd4e834cee3650289ee9e0d5677f976ecdb6d219e5f4f6cd94" -dependencies = [ - "rand_chacha", - "rand_core", - "zerocopy", -] - -[[package]] -name = "rand_chacha" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d3022b5f1df60f26e1ffddd6c66e8aa15de382ae63b3a0c1bfc0e4d3e3f325cb" -dependencies = [ - "ppv-lite86", - "rand_core", -] - -[[package]] -name = "rand_core" -version = "0.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "99d9a13982dcf210057a8a78572b2217b667c3beacbf3a0d8b454f6f82837d38" -dependencies = [ - "getrandom", -] - [[package]] name = "redox_syscall" version = "0.5.11" @@ -1625,15 +1574,6 @@ version = "0.11.0+wasi-snapshot-preview1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9c8d87e72b64a3b4db28d11ce29237c246188f4f51057d65a7eab63b7987e423" -[[package]] -name = "wasi" -version = "0.14.2+wasi-0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9683f9a5a998d873c0d21fcbe3c083009670149a8fab228644b8bd36b2c48cb3" -dependencies = [ - "wit-bindgen-rt", -] - [[package]] name = "wasm-bindgen" version = "0.2.100" @@ -1914,15 +1854,6 @@ version = "0.0.19" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d135d17ab770252ad95e9a872d365cf3090e3be864a34ab46f48555993efc904" -[[package]] -name = "wit-bindgen-rt" -version = "0.39.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f42320e61fe2cfd34354ecb597f86f413484a798ba44a8ca1165c58d42da6c1" -dependencies = [ - "bitflags 2.9.0", -] - [[package]] name = "write16" version = "1.0.0" @@ -1959,26 +1890,6 @@ dependencies = [ "synstructure", ] -[[package]] -name = "zerocopy" -version = "0.8.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2586fea28e186957ef732a5f8b3be2da217d65c5969d4b1e17f973ebbe876879" -dependencies = [ - "zerocopy-derive", -] - -[[package]] -name = "zerocopy-derive" -version = "0.8.24" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a996a8f63c5c4448cd959ac1bab0aaa3306ccfd060472f85943ee0750f0169be" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.100", -] - [[package]] name = "zerofrom" version = "0.1.6" diff --git a/Cargo.toml b/Cargo.toml index e715030..13d543e 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -68,7 +68,7 @@ tracing = { version = "0.1", default-features = false } tracing-subscriber = { version = "0.3", features = ["fmt"], default-features = false } # Used currently for SID generation -rand = { version = "0.9", features = ["std", "thread_rng"], default-features = false } +fastrand = { version = "2.3", features = ["std"], default-features = false } # HTML templates used in the web servers minijinja = { version = "2.9", features = ["serde"], default-features = false } diff --git a/src/login/database.rs b/src/login/database.rs index b8c612d..377fa1e 100644 --- a/src/login/database.rs +++ b/src/login/database.rs @@ -1,7 +1,5 @@ use std::sync::Mutex; -use rand::Rng; -use rand::distr::Alphanumeric; use rusqlite::Connection; use crate::ipc::lobby::ServiceAccount; @@ -52,7 +50,7 @@ impl LoginDatabase { } fn generate_account_id() -> u32 { - rand::random() + fastrand::u32(..) } /// Adds a new user to the database. @@ -114,11 +112,8 @@ impl LoginDatabase { } fn generate_sid() -> String { - let random_id: String = rand::rng() - .sample_iter(&Alphanumeric) - .take(56) - .map(char::from) - .collect(); + let random_id: String = String::from_utf8([fastrand::alphanumeric() as u8; 56].to_vec()) + .expect("Failed to create random SID"); random_id.to_lowercase() } diff --git a/src/world/database.rs b/src/world/database.rs index 1885903..3700883 100644 --- a/src/world/database.rs +++ b/src/world/database.rs @@ -310,11 +310,11 @@ impl WorldDatabase { } fn generate_content_id() -> u32 { - rand::random() + fastrand::u32(..) } fn generate_actor_id() -> u32 { - rand::random() + fastrand::u32(..) } /// Gives (content_id, actor_id)