Rust releases
The Cargo release contains three crates at the version in the root Cargo.toml:
boxdb-sqlite-sys: BoxDB’s bundled SQLite engine and bindings.boxdb-rusqlite: the rusqlite wrapper with a direct dependency on that engine.boxdb: the public library and CLI.
Applications install boxdb with cargo add boxdb. No [patch], Git dependency
or system SQLite is needed. Native build tools and libclang are required.
Versions before 1.0 are experimental and may change the API and storage contract.
Verify
Use Cargo 1.90 or newer, which supports packaging and publishing multiple crates
in dependency order. Update all Cargo and npm release versions together, run
just check, then commit the release changes.
just cargo-packageCargo packages all three crates and builds their extracted archives using a
temporary registry. This verifies dependencies that have not yet been published.
Archives are written to target/package. GitHub’s release workflow runs the
same command and attaches all three .crate files alongside the CLI binaries
and native Go libraries. After publishing the complete GitHub release, it also
creates the corresponding packages/go/vX.Y.Z module tag. See the
Go installation instructions.
The CLI release includes macOS ARM64, Linux x64 (musl) and Linux ARM64 (glibc). The ARM64 builds support 64-bit Raspberry Pi OS Bookworm or newer; native Go archives use the same ARM64 architecture.
Before publication, also build a separate application outside this workspace
with only a boxdb path dependency. Exercise native types and schema export
through its public Rust API without adding any Cargo patches.
Publish
Authenticate locally with cargo login, using a crates.io API token authorized
to publish these three packages. Keep credentials outside this repository.
just publish-cargoCargo verifies and publishes the engine, wrapper and public crate in dependency
order. A release requires a clean Git checkout. If only part of the release is
published, inspect the existing versions and publish only the remaining crates
with cargo publish --locked -p PACKAGE.
Finally, verify installation from a separate project with cargo add boxdb and
run cargo install boxdb --locked in a temporary installation root to check the
published CLI. Publish the corresponding npm archives using the
npm release workflow.