Skip to content

feat(javascript): add Node.js ADBC driver manager#4046

Merged
lidavidm merged 25 commits intoapache:mainfrom
kentkwu:gh-3734
Mar 9, 2026
Merged

feat(javascript): add Node.js ADBC driver manager#4046
lidavidm merged 25 commits intoapache:mainfrom
kentkwu:gh-3734

Conversation

@kentkwu
Copy link
Contributor

@kentkwu kentkwu commented Mar 4, 2026

This PR introduces an ADBC Driver Manager for JavaScript, specifically Node.js.

It is architected as a Node-API native module that wraps the Rust ADBC Driver Manager via NAPI-RS. This was chosen to leverage existing Arrow infrastructure in Rust and the mature Rust/JS FFI ecosystem.

This means that the driver manager will run on Node (and bun, but currently untested).

  • Rust layer (src/): Wraps adbc_driver_manager crate.
    • Async operations are run on the libuv thread pool via NAPI-RS AsyncTask. Results cross the boundary as Arrow IPC streams
    • IPC is used as JS does not currently have a C Data Interface implementation. In the future, we can switch the driver manager to use the C Data Interface for true zero-copy once that is implemented
  • TypeScript layer (lib/)
    • JS Binding API with AdbcDatabase, AdbcConnection, AdbcStatement
  • Platform binaries are built for
    • linux-x64
    • linux-arm64
    • darwin-x64
    • darwin-arm64
    • win32-x64

I've omitted final publishing to NPM in this PR. I will file a separate issue to set up publishing once this is merged.

Closes #3734

@kentkwu kentkwu marked this pull request as ready for review March 4, 2026 16:39
@kentkwu kentkwu changed the title feat(javascript/adbc-driver-manager): Add JavaScript NAPI Driver Manager feat(javascript/driver-manager): add Node.js ADBC driver manager Mar 4, 2026
@kentkwu kentkwu marked this pull request as draft March 4, 2026 16:43
@kentkwu kentkwu marked this pull request as ready for review March 4, 2026 16:47
Copy link
Member

@zeroshade zeroshade left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

initial first pass of reviews on the workflows

@kentkwu kentkwu changed the title feat(javascript/driver-manager): add Node.js ADBC driver manager feat(javascript): add Node.js ADBC driver manager Mar 4, 2026
@kentkwu kentkwu requested a review from zeroshade March 4, 2026 22:09
@kentkwu kentkwu requested a review from lidavidm March 5, 2026 02:53
Copy link
Member

@zeroshade zeroshade left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Just a few questions and a couple concerns, but otherwise looks good!

@kentkwu kentkwu requested review from lidavidm and zeroshade March 6, 2026 19:22
@eitsupi
Copy link
Contributor

eitsupi commented Mar 7, 2026

The CI failure is unrelated to this change (see #4055).

Copy link
Member

@zeroshade zeroshade left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good!

@lidavidm lidavidm merged commit 20dda76 into apache:main Mar 9, 2026
97 of 103 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Implement Node.js driver manager

4 participants