Skip to content

musl targets still fail to compile in 0.1.9: BSD u_int*_t typedefs (same root cause as closed #156) #314

Description

@ohdearquant

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.

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions