Skip to content

native: ship libjvector-aarch64.so in the Linux aarch64 wheel; state the real provider default - #145

Merged
tae898 merged 2 commits into
mainfrom
fix/native-aarch64-jvector-lib
Oct 29, 2026
Merged

tae898 merged 2 commits into
mainfrom
fix/native-aarch64-jvector-lib

Conversation

@tae898

@tae898 tae898 commented Oct 29, 2026

Copy link
Copy Markdown
Collaborator

Closes #144

The Linux aarch64 native wheel now ships libjvector-aarch64.so next to libarcadedb.so, and the ArcadeNative comment states the real provider default. The default itself is unchanged.

  • native/scripts/build-image.sh: on Linux, copy libjvector-x86_64.so or libjvector-aarch64.so (by uname -m) from the jvector 4.0.2 jar; it used to copy only on x86-64.
  • native/wheel/build_wheel.py: libraries_to_ship() adds the library of the architecture on Linux (macOS and Windows have none in the jar).
  • Loader: no change needed. LibraryLoader already maps aarch64 to /libjvector-aarch64.so and lib.py already points ARCADEDB_NATIVE_LIBDIR at the directory of libarcadedb.so.
  • ArcadeNative: the comment said "unset: jvector chooses"; the engine forces the scalar DefaultVectorizationProvider in every native image (fix(#10072): a native image uses scalar vector math instead of the uncompiled Vector API arcadedb#10077), so Highway runs only with ARCADEDB_VECTOR_PROVIDER=native.
  • test-native.yml: new gate that a Linux wheel contains arcadedb/_native/libjvector-<arch>.so; NOTICE and THIRD_PARTY_NOTICES.md (and gen_notices.py) name both libraries.
  • test-jvm.yml step summary and the select_matrix.py comment: the Windows ARM64 reason was stale (windows-11-arm runners exist). The real blockers: no jpype1 1.7.1 wheel for win_arm64 (win_amd64 only) and no GraalVM CE 25.4.4.1.1 build for Windows ARM64 (windows-x64 only), so neither package can be built there. black also rewrapped one long line in select_matrix.py.

Tests: tests/test_native_jvector_library.py (8 cases: ship list per platform and architecture, loader names, the build script's copy step, the comment); all 8 fail on origin/main and pass here, together with test_native_wheel_template.py and test_select_matrix.py. pre-commit (black, isort, shfmt, actionlint) and bandit are clean on the changed files; the extraction of both libraries from the 4.0.2 jar was run by hand (145912 B and 111480 B). Not run: an aarch64 image build or auditwheel on the aarch64 wheel (the library needs glibc 2.17 and GLIBCXX_3.4.21 at most); the new CI gate and the existing glibc-floor and auditwheel gates cover it on the aarch64 leg.

Not decided here: whether Highway should become the default (jvector#771: slower than Panama at 128-d on AVX2); that waits for measurements.

🤖 Generated with Claude Code

tae898 and others added 2 commits October 30, 2026 03:00
…the real provider default (#144)

The jvector 4.0.2 jar carries libjvector-aarch64.so, but build-image.sh and
build_wheel.py shipped a jvector library on x86-64 only. Both now take the
library of the Linux architecture (libraries_to_ship), test-native.yml gates
that a Linux wheel contains libjvector-<arch>.so, and the notices name both.
The ArcadeNative comment said "unset: jvector chooses"; the engine forces the
scalar DefaultVectorizationProvider in every image (arcadedb#10077), so Highway
runs only with ARCADEDB_VECTOR_PROVIDER=native. The default is unchanged.

Also: the step summary of test-jvm.yml and the select_matrix.py comment gave a
stale reason for Windows ARM64; the real blockers are no jpype1 win_arm64 wheel
and no GraalVM CE Windows ARM64 build.

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
…64 for x86_64)

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@tae898
tae898 merged commit 6a390f2 into main Oct 29, 2026
36 checks passed
@tae898
tae898 deleted the fix/native-aarch64-jvector-lib branch October 29, 2026 19:05
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.

native: Linux aarch64 wheel ships no libjvector-aarch64.so; ArcadeNative comment misstates the default provider

1 participant