v2.8.29
Bug fixes
-
Bounded memory when streaming large entries. The compression path now applies backpressure through the codec, pacing the input to the rate the compressor consumes it. Previously, writing a large entry could grow memory in proportion to the entry size — a 256 MB file peaked around 390 MB — because the platform's native
CompressionStreamdoes not apply writable backpressure in Node.js and Bun. Peak memory is now flat regardless of entry size (~99 MB for that same 256 MB file), with no throughput cost. (d18f4e3) -
A provided zlib codec is no longer discarded when the WASM module is unavailable. If you supply a self-contained
CompressionStreamZlib/DecompressionStreamZlib(e.g. the pure-JS port) withuseCompressionStream: falseand no WASM module (wasmURI: null, or a failed load), the library used to silently fall back to the nativeCompressionStream. Your codec is now honored; the native fallback applies only when the codec that would actually run depends on the WASM module. (a67c54e)
Other
- Added a reproducible benchmark suite (
benchmarks/) andBENCHMARKS.mdcomparing@zip.js/zip.jsagainst jszip, fflate and archiver across compression, decompression and disk-to-disk streaming. (65178e7) - Tests: the crypto error-path tests opt out of Deno's resource sanitizer, working around a Deno bug where cancelling a transferred, still-open
ReadableStreamleaks aMessagePort(reported upstream — denoland/deno#36015). (454f79e)