Skip to content

Proposal: official Node.js binding (turbovec-node) #85

Description

@beshkenadze

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or requestplannedAccepted on the roadmap; not yet scheduled

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions