wasmwyhash
v0.2.2
Published
This WebAssembly module provides a high-performance implementation of the [wyhash algorithm](https://crates.io/crates/wyhash) by Wang Yi, ported from Rust for seamless JavaScript and browser usage.
Downloads
9
Readme
WYHASH 0.2.1 (WASM)
This WebAssembly module provides a high-performance implementation of the wyhash algorithm by Wang Yi, ported from Rust for seamless JavaScript and browser usage.
Currently ranks as one of the fastest non-cryptographic hash functions in the SMHasher benchmark—outpacing t1ha and XXH3.
Features
- ✅ Incremental (chunked) hashing via a reusable
WyHasherinstance - 🔁 Seedable for deterministic hashing
- ⚡ Ultra-fast and memory-efficient WebAssembly runtime
- 🔐 Supports Base16 (hex), Base32, and Base58 encoded outputs
- 🧪 Also includes a one-shot
calculate_hash()for convenience
Installation
npm install wyhash-wasmQuickstart (One-shot hashing)
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8"/>
<title>WyHash Wasm Demo</title>
</head>
<body>
<script type="module">
import init, { calculate_hash, BaseEncoding } from "wyhash-wasm";
async function runHash() {
await init(); // Initialize the wasm module
const data = new TextEncoder().encode("Hello World");
const seed = BigInt(0xA4DE);
let resultHex = calculate_hash(data, seed, BaseEncoding.Base16);
let resultB32 = calculate_hash(data, seed, BaseEncoding.Base32);
let resultB58 = calculate_hash(data, seed, BaseEncoding.Base58);
console.log("Base16 / Hex: ", resultHex);
console.log("Base32: ", resultB32);
console.log("Base58: ", resultB58);
}
runHash();
</script>
</body>
</html>Advanced Usage (Chunked Streaming)
import init, { WyHasher, BaseEncoding } from "wyhash-wasm";
await init();
const hasher = new WyHasher(0xBEEF);
hasher.update(new Uint8Array([1, 2, 3]));
hasher.update(new Uint8Array([4, 5, 6]));
// const hashHex = hasher.finalize(BaseEncoding.Base16);
const hashHex = hasher.finalize_and_reset(BaseEncoding.Base16);
console.log("Final hash (hex):", hashHex);License
MIT — © Your Project Team
