@huggingface/blake3-jit
v0.0.2
Published
Temporary fork of blake3-jit with Hasher.reset() and pre-allocated buffers. Will be deprecated once upstream blake3-jit exposes reset().
Readme
@huggingface/blake3-jit
Temporary fork of blake3-jit by @Brooooooklyn with performance enhancements for Hugging Face Xet content-defined chunking.
This package will be deprecated once upstream blake3-jit exposes these changes.
Changes from upstream
Hasher.reset()method — resets the hasher to process a new message with the same key/flags, reusing all internal buffers (zero allocations per hash).Pre-allocated internal buffers —
parentBlock,parentCv,chunkCv,outWords, andfinalizeCvare allocated once in the constructor and reused acrossupdate/finalizecalls, significantly reducing GC pressure in hot loops.ChunkState.resetTo()method — allows reusingChunkStateinstances instead of allocating new ones per chunk.Removed
Uint32Arrayview fast-path inChunkState.update— the byte-by-bytereadLittleEndianWordsFullpath was empirically faster and avoidsRangeErroron unaligned offsets.Dual ESM/CJS output via
tshy— the upstream package is ESM-only; this fork usestshyto produce both ESM and CommonJS builds, required for compatibility with Node.js CJS consumers.
These changes are also available as a patch file at packages/xetchunk-wasm/patches/blake3-jit.patch (applicable to the upstream dist bundle).
Installation
npm install @huggingface/blake3-jitUsage
import { hash, Hasher } from "@huggingface/blake3-jit";
// One-shot hashing
const digest = hash(new Uint8Array([1, 2, 3]));
// Incremental hashing with reset (zero-alloc reuse)
const hasher = new Hasher();
hasher.update(chunk1);
const hash1 = hasher.finalize();
hasher.reset();
hasher.update(chunk2);
const hash2 = hasher.finalize();
// Keyed hashing (MAC)
const mac = Hasher.newKeyed(key).update(message).finalize();Upstream
This is a fork of blake3-jit — a high-performance BLAKE3 implementation with runtime JIT WASM SIMD, created by LongYinan (@Brooooooklyn).
See the upstream repository for full documentation, benchmarks, and architecture details.
License
MIT — see LICENSE
