Nan#14
Closed
trkyshorty wants to merge 26 commits into
Closed
Conversation
This reverts commit 0657226.
This reverts commit 9150af4.
Enhance the buffer size calculation for LZF compression to handle worst-case scenarios more effectively. In cases where compression is minimal or none, the buffer size needs to be slightly larger than the original data size. To ensure a safer buffer allocation, the buffer size is increased by 6.25% of the input size, plus an additional 64 bytes, and 3 bytes for termination or minor overhead. Updated calculation: `size_t bytesCompressed = bytesIn + (bytesIn / 16) + 64 + 3;` `bytesIn / 16`: Adds 6.25% of the input size to the buffer. `+ 64`: Accommodates any additional bytes needed by the LZF algorithm. `+ 3`: Handles termination and other small additions. This change ensures more reliable compression performance, even in edge cases.
Improve Buffer Size Calculation for LZF Compression
…y/node-lzf into node-slim-mem-leak-fix
Node slim mem leak fix test
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
- port binding from nan to node-addon-api (abi-stable across node majors) - resolve native binary via node-gyp-build: bundled prebuild first, source build fallback - compress now returns an exact-sized copy instead of a slice view so the oversized scratch allocation is not pinned by the returned buffer - add prebuild github actions workflow (linux-x64, linux-arm64, win32-x64) - extend tests: roundtrips, compressible/incompressible data, type errors - add BSD-2-Clause LICENSE retaining Ian Babrou's copyright, credit original author in contributors and README, note bundled liblzf
…y/node-lzf into node-slim-mem-leak-fix
- port binding from nan to node-addon-api (abi-stable across node majors) - resolve native binary via node-gyp-build: bundled prebuild first, source build fallback - compress now returns an exact-sized copy instead of a slice view so the oversized scratch allocation is not pinned by the returned buffer - add prebuild github actions workflow (linux-x64, linux-arm64, win32-x64) - extend tests: roundtrips, compressible/incompressible data, type errors - add BSD-2-Clause LICENSE retaining Ian Babrou's copyright, credit original author in contributors and README, note bundled liblzf
- compressAsync/decompressAsync run on the libuv thread pool via Napi::AsyncWorker; promises reject with the same errors sync throws - decompress expectedLength is now required and validated (integer, 1..1GiB) — removes the legacy 999MB default allocation footgun - input buffers validated: non-buffer, empty, >1GiB throw TypeError - corrupted input and too-small-output errors are now distinguished via errno (EINVAL vs E2BIG) with descriptive messages - results wrapped zero-copy (Buffer::NewOrCopy over malloc'd memory, shrunk with realloc) instead of allocate-then-copy - bundled TypeScript definitions (index.d.ts) - test suite rewritten on node:test: roundtrips, 300-case fuzz, corrupted/garbage input safety, async paths, concurrency, fixed wire-format decode vectors - benchmark rewritten against built-in zlib (deflateRaw 1/6), zero deps, deterministic datasets; README updated with fresh numbers - ci: darwin-arm64 prebuild job, dependabot for actions and npm
# Conflicts: # src/lzf.cc
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
No description provided.