Skip to content

feat: provide pre-built static and shared libraries in release assets #390

@s2x

Description

@s2x

Description

Currently, GitHub releases only contain source code archives. While Python wheels are distributed via PyPI, there are no pre-built artifacts for C/C++ consumers. This makes it unnecessarily difficult to integrate zvec into projects in other languages that need to link against the native library.

Motivation

I'm working on a PHP extension for zvec that wraps the C API. Building zvec and all its dependencies from source in CI is extremely complex and error-prone — especially across different platforms and toolchains. Having pre-built artifacts available would dramatically accelerate development of language bindings (PHP, Ruby, Rust, Zig, etc.).

Request

Please add pre-built both static (.a) and shared (.so/.dylib) libraries to GitHub release assets for the following platforms:

Platform Arch Format
Ubuntu 20.04+ / Debian 11+ x86_64 .tar.gz
Ubuntu 22.04+ / Debian 12+ x86_64 .tar.gz
Ubuntu 24.04+ x86_64 .tar.gz
Fedora 39+ x86_64 .tar.gz
macOS 13+ (Intel) x86_64 .tar.gz
macOS 14+ (Apple Silicon) arm64 .tar.gz
(optional) Linux aarch64 .tar.gz

Each archive should ideally contain:

  • libzvec_db.a / libzvec_core.a (static)
  • libzvec_db.so / libzvec_core.so or .dylib (shared)
  • C/C++ headers
  • A lib/cmake/ or equivalent for find_package(zvec)

Benefits

  • Language bindings: dramatically simpler CI for PHP, Ruby, Rust, Zig, etc.
  • End users: easier to vendor zvec without CMake or a full C++ toolchain
  • Consumption in non-CMake projects: Makefile, Zig build, or manual link workflows
  • Cross-compilation: fewer bootstrap cycles for non-primary targets

Related

Notes

  • The Python wheel build infrastructure (.github/workflows/build_wheel.yml, cibuildwheel) could potentially be reused or adapted for producing these artifacts.
  • A matrix similar to the existing wheel build matrix would suffice.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

Status

Backlog

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions