From d5ceaad797b17dbc36b7d78c0870cd59a30dddbb Mon Sep 17 00:00:00 2001 From: Thomas Heck Date: Mon, 14 Jul 2025 20:39:38 +0200 Subject: [PATCH] feat(solver-wasm): replace outdated wee-alloc with FreeListAllocator from lol-alloc --- pkgs/solver-wasm/Cargo.lock | 86 +++++++++++++++++-------------------- pkgs/solver-wasm/Cargo.toml | 2 +- pkgs/solver-wasm/src/lib.rs | 11 ++--- 3 files changed, 47 insertions(+), 52 deletions(-) diff --git a/pkgs/solver-wasm/Cargo.lock b/pkgs/solver-wasm/Cargo.lock index 9d6ebe8..7ef7e49 100644 --- a/pkgs/solver-wasm/Cargo.lock +++ b/pkgs/solver-wasm/Cargo.lock @@ -2,6 +2,12 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "autocfg" +version = "1.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" + [[package]] name = "block-buffer" version = "0.10.4" @@ -17,12 +23,6 @@ version = "3.19.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "46c5e41b57b8bba42a04676d81cb89e9ee8e859a1a66f80a5a72e1cb76b34d43" -[[package]] -name = "cfg-if" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4785bdd1c96b2a846b2bd7cc02e86b6b3dbf14e7e53446c4f54c92a361040822" - [[package]] name = "cfg-if" version = "1.0.1" @@ -74,6 +74,16 @@ version = "0.2.174" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1171693293099992e19cddea4e8b849964e9846f4acee11b3948bcc337be8776" +[[package]] +name = "lock_api" +version = "0.4.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "96936507f153605bddfcda068dd804796c84324ed2510809e5b2a624c81da765" +dependencies = [ + "autocfg", + "scopeguard", +] + [[package]] name = "log" version = "0.4.27" @@ -81,10 +91,13 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13dc2df351e3202783a1fe0d44375f7295ffb4049267b0f3018346dc122a1d94" [[package]] -name = "memory_units" -version = "0.4.0" +name = "lol_alloc" +version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8452105ba047068f40ff7093dd1d9da90898e63dd61736462e9cdda6a90ad3c3" +checksum = "83e5106554cabc97552dcadf54f57560ae6af3276652f82ca2be06120dc4c5dc" +dependencies = [ + "spin", +] [[package]] name = "once_cell" @@ -116,13 +129,19 @@ version = "1.0.21" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a0d197bd2c9dc6e53b84da9556a69ba4cdfab8619eb41a8bd1cc2027a0f6b1d" +[[package]] +name = "scopeguard" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94143f37725109f92c262ed2cf5e59bce7498c01bcc1502d7b9afe439a4e9f49" + [[package]] name = "sha2" version = "0.10.9" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a7507d819769d01a365ab707794a4084392c824f54a7a6a7862f8c3d0892b283" dependencies = [ - "cfg-if 1.0.1", + "cfg-if", "cpufeatures", "digest", ] @@ -131,9 +150,18 @@ dependencies = [ name = "solver-wasm" version = "0.0.0" dependencies = [ + "lol_alloc", "sha2", "wasm-bindgen", - "wee_alloc", +] + +[[package]] +name = "spin" +version = "0.9.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6980e8d7511241f8acf4aebddbb1ff938df5eebe98691418c4468d0b72a96a67" +dependencies = [ + "lock_api", ] [[package]] @@ -171,7 +199,7 @@ version = "0.2.100" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1edc8929d7499fc4e8f0be2262a241556cfc54a0bea223790e71446f2aab1ef5" dependencies = [ - "cfg-if 1.0.1", + "cfg-if", "once_cell", "rustversion", "wasm-bindgen-macro", @@ -222,37 +250,3 @@ checksum = "1a05d73b933a847d6cccdda8f838a22ff101ad9bf93e33684f39c1f5f0eece3d" dependencies = [ "unicode-ident", ] - -[[package]] -name = "wee_alloc" -version = "0.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dbb3b5a6b2bb17cb6ad44a2e68a43e8d2722c997da10e928665c72ec6c0a0b8e" -dependencies = [ - "cfg-if 0.1.10", - "libc", - "memory_units", - "winapi", -] - -[[package]] -name = "winapi" -version = "0.3.9" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c839a674fcd7a98952e593242ea400abe93992746761e38641405d28b00f419" -dependencies = [ - "winapi-i686-pc-windows-gnu", - "winapi-x86_64-pc-windows-gnu", -] - -[[package]] -name = "winapi-i686-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac3b87c63620426dd9b991e5ce0329eff545bccbbb34f3be09ff6fb6ab51b7b6" - -[[package]] -name = "winapi-x86_64-pc-windows-gnu" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" diff --git a/pkgs/solver-wasm/Cargo.toml b/pkgs/solver-wasm/Cargo.toml index 6859db1..395ee23 100644 --- a/pkgs/solver-wasm/Cargo.toml +++ b/pkgs/solver-wasm/Cargo.toml @@ -9,7 +9,7 @@ crate-type = ["cdylib"] [dependencies] wasm-bindgen = "0.2" sha2 = "0.10" -wee_alloc = { version = "0.4", default-features = false } +lol_alloc = "0.4" [profile.release] lto = true diff --git a/pkgs/solver-wasm/src/lib.rs b/pkgs/solver-wasm/src/lib.rs index 3cce0db..37ee065 100644 --- a/pkgs/solver-wasm/src/lib.rs +++ b/pkgs/solver-wasm/src/lib.rs @@ -1,11 +1,12 @@ -extern crate wee_alloc; - -#[global_allocator] -static ALLOC: wee_alloc::WeeAlloc = wee_alloc::WeeAlloc::INIT; - use sha2::{Digest, Sha256}; use wasm_bindgen::prelude::*; +#[cfg(target_arch = "wasm32")] +#[global_allocator] +static ALLOCATOR: lol_alloc::AssumeSingleThreaded = + // SAFETY: This application is single threaded, so using AssumeSingleThreaded is allowed. + unsafe { lol_alloc::AssumeSingleThreaded::new(lol_alloc::FreeListAllocator::new()) }; + #[wasm_bindgen] pub fn solve(nonce: Box<[u8]>, target: Box<[u8]>, difficulty_bits: u32) -> Box<[u8]> { let mut buf = vec![0u8; 8 + nonce.len()];