Reproduced today with sqlite-vec 0.1.9 as a Rust crate dependency, cross-compiling with cargo-zigbuild to aarch64-unknown-linux-musl:
sqlite-vec.c:68:9: error: unknown type name 'u_int8_t'
68 | typedef u_int8_t uint8_t;
sqlite-vec.c:69:9: error: unknown type name 'u_int16_t'
69 | typedef u_int16_t uint16_t;
sqlite-vec.c:70:9: error: unknown type name 'u_int64_t'
70 | typedef u_int64_t uint64_t;
Same root cause as #156 (closed without a code change): the u_int8_t/u_int16_t/u_int64_t names are BSD/glibc extensions from sys/types.h. musl deliberately does not define them, so every musl target (x86_64 and aarch64 alike, any linker) fails at these three lines while glibc, macOS, and Windows builds pass.
Suggested fix: the standard C99 fixed-width types these typedefs are trying to produce already exist in <stdint.h> on every supported platform — replacing the three typedef u_int*_t ... lines with #include <stdint.h> (or guarding the typedefs to only apply where uint8_t is genuinely absent) makes the file portable to musl with no behavior change elsewhere.
Filing because static-musl builds are a common deployment shape for embedded/edge targets, and the failure is currently a hard blocker for any Rust project bundling sqlite-vec on those targets.
Reproduced today with sqlite-vec 0.1.9 as a Rust crate dependency, cross-compiling with cargo-zigbuild to
aarch64-unknown-linux-musl:Same root cause as #156 (closed without a code change): the
u_int8_t/u_int16_t/u_int64_tnames are BSD/glibc extensions fromsys/types.h. musl deliberately does not define them, so every musl target (x86_64 and aarch64 alike, any linker) fails at these three lines while glibc, macOS, and Windows builds pass.Suggested fix: the standard C99 fixed-width types these typedefs are trying to produce already exist in
<stdint.h>on every supported platform — replacing the threetypedef u_int*_t ...lines with#include <stdint.h>(or guarding the typedefs to only apply whereuint8_tis genuinely absent) makes the file portable to musl with no behavior change elsewhere.Filing because static-musl builds are a common deployment shape for embedded/edge targets, and the failure is currently a hard blocker for any Rust project bundling sqlite-vec on those targets.