This looks very similar to #5379, but on linux-musl / Alpine.
User-facing report: lancedb/lancedb#3200
On Alpine Linux, the musl Node binary fails to load with:
Error relocating .../lancedb.linux-x64-musl.node: sum_4bit_dist_table_32bytes_batch_avx512: symbol not found
What I found:
- the missing symbol comes from the AVX512 dist-table path in
rust/lance-linalg
sum_4bit_dist_table_32bytes_batch_avx512 is declared in src/simd/dist_table.rs
- implemented in
src/simd/dist_table.c
- and built separately in
build.rs
This seems to match the same underlying pattern as #5379: AVX512 support can be enabled broadly enough that the Rust AVX512 callsite is compiled even when the dist_table AVX512 object does not actually make it into the final musl binary.
In my repro:
- 0.26.2 works
- 0.27.0 / 0.27.1 / 0.27.2-beta.0 / 0.27.2-beta.1 fail on Alpine
The user-facing repro is in lancedb/lancedb#3200, but I’m opening this here because the symbol and build logic seem to live in lance-linalg.
This looks very similar to #5379, but on linux-musl / Alpine.
User-facing report: lancedb/lancedb#3200
On Alpine Linux, the musl Node binary fails to load with:
Error relocating .../lancedb.linux-x64-musl.node: sum_4bit_dist_table_32bytes_batch_avx512: symbol not foundWhat I found:
rust/lance-linalgsum_4bit_dist_table_32bytes_batch_avx512is declared insrc/simd/dist_table.rssrc/simd/dist_table.cbuild.rsThis seems to match the same underlying pattern as #5379: AVX512 support can be enabled broadly enough that the Rust AVX512 callsite is compiled even when the
dist_tableAVX512 object does not actually make it into the final musl binary.In my repro:
The user-facing repro is in lancedb/lancedb#3200, but I’m opening this here because the symbol and build logic seem to live in
lance-linalg.