* perf(argon2): validate UTF-8 with simdutf8 before owning the string
Check the JS byte slice with simdutf8, then build String via
from_utf8_unchecked so from_utf8 does not walk the bytes again.
* perf(argon2): decode PHC Base64 with a LUT instead of the engine
Salt and tag fields are tens of bytes. A 256-entry table plus leftover-bit
checks beats the generic base64 crate, and on aarch64 argon2-rust's SIMD
would not even run for a 16-byte salt.
* perf(argon2): decode PHC fields with argon2-rust SIMD Base64
Use the new encode_base64/decode_base64 entry points. decode_phc still
owns param order and data=. Temporarily depends on the local
argon2-rust tree until 1.1.0 is on crates.io.
* feat(argon2): consume argon2-rust 1.1 PHC APIs
Drop the local PHC parser, encoder, and compare. Hash and verify go
through hash_encoded_with_ad, decode_phc, and verify_with_ad.
Require argon2-rust 1.1 from crates.io; the sibling path dep is gone.
* feat(argon2): switch backend to argon2-rust
Replace RustCrypto argon2 with argon2-rust 1.0.0 from crates.io.
Keep the public JS API. Verify accepts node-argon2 PHC param order
and associatedData. The bench pins the same raw params, salt, and
tag across implementations.
* fix(argon2): keep Node 22 tests and bound verify threads
Skip the node:crypto.argon2Sync comparison on runtimes that lack it.
Cap worker threads at available parallelism so a PHC p= value cannot
spawn one OS thread per lane. Allocate tag buffers with try_reserve
instead of vec! so a huge outputLen is a JS error, not a process abort.
* fix(argon2): skip node-argon2 interop when its native addon is missing
node-argon2 0.45 has no darwin-x64 prebuild. Intel macOS CI runs x64
Node on an ARM host, so a static import crashed the whole spec file.
* test(argon2): compare against node:crypto argon2
Drop the node-argon2 native addon from tests. Interop uses the
builtin KDF, which is available on every CI host that has it.
* chore: upgrade all npm deps
* fix: update tsconfig for TypeScript 7
Remove deprecated downlevelIteration and importsNotUsedAsValues options,
and explicitly include node types required by TypeScript 7.
* fix: download test artifacts into package dirs
@napi-rs/cli 3.8 requires all configured targets when running
napi artifacts. Test jobs only have one platform, so download
bindings directly into the workspace like the package template.
* fix: download bindings into packages/ for tests
upload-artifact uses packages/ as the common root, so the artifact
contains argon2/*.node not packages/argon2/*.node. Download into
packages/ so binaries land where the loaders expect them.
* fix: add WASI .d.cts files required by @napi-rs/cli 3.8
napi artifacts now requires a complete WASI loader set including
*.wasi.d.cts. Also upload the full WASI support files from the wasm
build job for the publish path.
* fix: upload only wasm artifacts from WASI builds
WASI loaders and types stay committed in the repo and updated with
the codegen; CI only needs the built .wasm binaries.
* chore(deps): update dependency ava to v8
* fix: update ava v8 configuration and Node.js requirements
- Change ava extensions config from object to array format for v8
- Update CI Node.js version matrix from ['20', '22', '24'] to ['22', '24']
- Ava v8 requires Node.js >= 22.20 due to iterator helper methods
Agent-Logs-Url: https://github.com/napi-rs/node-rs/sessions/8e1e8303-351c-476e-9f4d-3d39ff8d992e
* fix: remove sse4_crc32 dependency incompatible with Node.js 24
- Remove sse4_crc32 and @types/sse4_crc32 from crc32 package dependencies
- Update crc32 benchmark to exclude sse4_crc32 comparisons
- sse4_crc32 v7.0.0 lacks prebuilt binaries for Node.js 24 (ABI v137)
- Bench CI now passes on Node.js 24
Agent-Logs-Url: https://github.com/napi-rs/node-rs/sessions/1b2c25e3-3d62-43a9-bc72-9f521bb287a4
* fix: remove nodejieba dependency incompatible with Node.js 24
Agent-Logs-Url: https://github.com/napi-rs/node-rs/sessions/bd608fb3-0247-49b5-9740-224f9847e188
* fix: remove xxhash dependency incompatible with Node.js 24
The xxhash npm package v0.3.0 does not have prebuilt binaries for Node.js 24 (ABI version 137), causing benchmark failures with "Cannot find module '../build/Release/hash'" errors.
Removed xxhash from devDependencies and updated benchmark/xxhash.ts to run benchmarks without the xxhash C++ comparison. The benchmark still includes comparisons with xxhash-addon, xxhashjs, and webpack's wasm implementation.
This follows the same pattern used for sse4_crc32 and nodejieba dependencies.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
* fix: exclude Node.js 24 from armv7 test matrix
The armv7-unknown-linux-gnueabihf platform doesn't have Node.js 24 docker images available. Restrict testing to Node.js 22 only for this platform.
Agent-Logs-Url: https://github.com/napi-rs/node-rs/sessions/cee7816f-b688-4ae5-af92-6f51d48c387c
Co-authored-by: Brooooooklyn <3468483+Brooooooklyn@users.noreply.github.com>
---------
Co-authored-by: renovate[bot] <29139614+renovate[bot]@users.noreply.github.com>
Co-authored-by: anthropic-code-agent[bot] <242468646+Claude@users.noreply.github.com>
Co-authored-by: Claude Sonnet 4.5 <noreply@anthropic.com>
Co-authored-by: Brooooooklyn <3468483+Brooooooklyn@users.noreply.github.com>