-
Notifications
You must be signed in to change notification settings - Fork 1
Description
What
Automate publishing of libchrondb shared library and language-specific packages as GitHub Release assets when merging to main, so users can install ChronDB bindings without building from source.
Context
Today the CI workflow (.github/workflows/build-shared-library.yml) builds the shared library and runs binding tests, but the artifacts are only stored as ephemeral GitHub Actions artifacts — they expire and aren't user-facing.
The bindings (bindings/rust/, bindings/python/) expect the compiled libchrondb to exist locally. Without published artifacts, users must:
- Install GraalVM + native-image
- Clone the repo
- Run the full build pipeline (
clojure -M:shared-lib && native-image @target/shared-image-args) - Manually configure library paths
This is a significant barrier for anyone who just wants to use ChronDB from Rust or Python.
Expected outcome
1. Shared library tarballs (base artifact)
libchrondb-linux-x86_64.tar.gzlibchrondb-macos-x86_64.tar.gz(andaarch64when available)- Each contains:
libchrondb.{so,dylib},libchrondb.h,graal_isolate.h
2. Rust crate package
- Build the crate with the shared library bundled (
libchrondbinside the package) - Publish
.crateas release asset for direct install viacargo install --path - Future: publish to crates.io with pre-built binaries per platform
3. Python wheel
- Build platform-specific wheels (
.whl) withlibchrondbbundled inside the package - Publish wheels as release assets for
pip install ./chrondb-*.whl - Future: publish to PyPI
4. Documentation
- How to download and install each package
- Rust:
cargo addor download.crate+ set paths - Python:
pip installfrom release URL or local.whl - Minimal "getting started" example for each language
Why
Users of the language bindings should be able to install with a single command (pip install / cargo add) — not a full JVM/GraalVM toolchain setup. Bundling the shared library inside the language package eliminates the need for users to manage LD_LIBRARY_PATH or CHRONDB_LIB_DIR manually.