Skip to content

feat: add Windows ARM64 (win32-arm64) platform support#369

Merged
jraymakers merged 3 commits intoduckdb:mainfrom
npiesco:feat/win32-arm64-support
Mar 4, 2026
Merged

feat: add Windows ARM64 (win32-arm64) platform support#369
jraymakers merged 3 commits intoduckdb:mainfrom
npiesco:feat/win32-arm64-support

Conversation

@npiesco
Copy link
Copy Markdown
Contributor

@npiesco npiesco commented Mar 1, 2026

Add prebuilt native binary support for win32-arm64, enabling @duckdb/node-api to run on Windows ARM64 devices (e.g. Snapdragon X).

Build system:

  • Add fetch_libduckdb_windows_arm64.py to download the ARM64 DuckDB prebuilt library (duckdb.h, duckdb.lib, duckdb.dll)
  • Add OS==win and target_arch==arm64 conditions to all three binding.gyp targets (fetch_libduckdb, duckdb, copy_duckdb_node)

Platform package:

  • Add @duckdb/node-bindings-win32-arm64 package (os: win32, cpu: arm64)
  • Register it as an optionalDependency in @duckdb/node-bindings
  • Add explicit case in the runtime platform loader (duckdb.js)

CI pipeline:

  • Add windows_arm64 workflow dispatch input
  • Add windows_arm64 job targeting the windows-arm64 GitHub Actions runner, with ARM64-specific Node.js headers and node.lib

Documentation:

  • Update README.md with the new package in all relevant sections (docs, npm links, version update checklist, DuckDB upgrade checklist)

Tested locally on Windows ARM64 hardware:

  • Bindings: 19 test files, 261 tests passed
  • API: 1 test file, 92 tests passed
  • End-to-end smoke test: instance creation, queries, prepared statements, structs, lists, dates, Parquet/CSV roundtrips all pass

Add prebuilt native binary support for win32-arm64, enabling
@duckdb/node-api to run on Windows ARM64 devices (e.g. Snapdragon X).

Build system:
- Add fetch_libduckdb_windows_arm64.py to download the ARM64 DuckDB
  prebuilt library (duckdb.h, duckdb.lib, duckdb.dll)
- Add OS==win and target_arch==arm64 conditions to all three
  binding.gyp targets (fetch_libduckdb, duckdb, copy_duckdb_node)

Platform package:
- Add @duckdb/node-bindings-win32-arm64 package (os: win32, cpu: arm64)
- Register it as an optionalDependency in @duckdb/node-bindings
- Add explicit case in the runtime platform loader (duckdb.js)

CI pipeline:
- Add windows_arm64 workflow dispatch input
- Add windows_arm64 job targeting the windows-arm64 GitHub Actions
  runner, with ARM64-specific Node.js headers and node.lib

Documentation:
- Update README.md with the new package in all relevant sections
  (docs, npm links, version update checklist, DuckDB upgrade checklist)

Tested locally on Windows ARM64 hardware:
- Bindings: 19 test files, 261 tests passed
- API: 1 test file, 92 tests passed
- End-to-end smoke test: instance creation, queries, prepared
  statements, structs, lists, dates, Parquet/CSV roundtrips all pass
Copy link
Copy Markdown
Collaborator

@jraymakers jraymakers left a comment

Choose a reason for hiding this comment

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

Thanks for this PR! It mostly looks good, but there's a problem with the image tag that prevents it from running in GitHub Actions.

@npiesco
Copy link
Copy Markdown
Contributor Author

npiesco commented Mar 2, 2026

@jraymakers feedback noted and incorporated

@npiesco
Copy link
Copy Markdown
Contributor Author

npiesco commented Mar 3, 2026

@jraymakers taken care of

@jraymakers jraymakers merged commit d4ccb04 into duckdb:main Mar 4, 2026
6 checks passed
@jraymakers jraymakers mentioned this pull request Mar 4, 2026
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.

2 participants