Proposal: official Node.js binding (turbovec-node)
I've built a working Node.js binding for turbovec with napi-rs and would like to propose contributing it upstream.
What it provides
- A thin napi addon over
TurboQuantIndex and IdMapIndex — mirroring the Python binding's surface (new/add/search, addWithIds/remove/searchWithAllowlist, write/load, getters).
BigInt / BigUint64Array for the i64 search indices and u64 external ids.
- Static OpenBLAS on Linux (no
libopenblas runtime dependency in the published .node), Accelerate on macOS.
- A tag-gated npm release workflow.
Status
Implemented and published from my fork (beshkenadze/turbovec, turbovec-node/) as a scoped npm package. It tracks the core via a path dep and currently builds against the 0.8.0 core.
Ask
Would you be open to a PR adding turbovec-node/ (+ the release workflow)? Happy to adapt naming, packaging, and CI to your preferences — including publishing under the unscoped turbovec name if you'd prefer to own it.
Note: with the new turbovec/build.rs from #79 emitting BLAS link directives, the addon's Linux OpenBLAS wiring can likely be simplified — I can fold that into the PR.
Proposal: official Node.js binding (
turbovec-node)I've built a working Node.js binding for turbovec with napi-rs and would like to propose contributing it upstream.
What it provides
TurboQuantIndexandIdMapIndex— mirroring the Python binding's surface (new/add/search,addWithIds/remove/searchWithAllowlist,write/load, getters).BigInt/BigUint64Arrayfor thei64search indices andu64external ids.libopenblasruntime dependency in the published.node), Accelerate on macOS.Status
Implemented and published from my fork (
beshkenadze/turbovec,turbovec-node/) as a scoped npm package. It tracks the core via a path dep and currently builds against the 0.8.0 core.Ask
Would you be open to a PR adding
turbovec-node/(+ the release workflow)? Happy to adapt naming, packaging, and CI to your preferences — including publishing under the unscopedturbovecname if you'd prefer to own it.