Files
LongYinan 2b8b617be0 feat(argon2): switch backend to argon2-rust (#1188)
* 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.
2026-08-13 11:01:01 +08:00

2.5 KiB

node-rs

CI

When Node.js meet Rust = 🚀

napi-rs

Make rust crates binding to Node.js use napi-rs

Playground: https://node-rs.dev

Packages

Package Version Downloads Description
@node-rs/crc32 Fastest CRC32 implementation using SIMD
@node-rs/jieba jieba-rs binding
@node-rs/bcrypt Fastest bcrypt implementation
@node-rs/xxhash xxhash-rust Node.js binding
@node-rs/argon2 argon2-rust binding for Node.js.
@node-rs/jsonwebtoken jsonwebtoken binding for Node.js.