zova 0.25.0

Safe Rust bindings for Zova, a SQLite-backed embedded database for records, objects, vectors, and graph relationships.
Documentation

zova

Safe Rust bindings for Zova.

Zova is a SQLite-backed embedded database for records, objects, and vectors in one local file. This crate wraps the lower-level zova-sys C ABI crate with Rust ownership, error handling, and safe containers.

Install

[dependencies]
zova = "0.20.0"

The crate builds Zova's native C ABI through zova-sys, so users need Rust, Zig 0.16.0 or newer, and a working C compiler/linker.

What It Covers

  • database create/open/convert
  • SQL exec and prepared statements
  • transactions and savepoints
  • backup, compact copy, and restore
  • objects, chunks, manifests, range reads, and ObjectWriter
  • vector collections, CRUD, exact search, candidate search, thresholds, and SQL-native vector search
  • same-process transaction-aware app events with listen / notify
  • transparent use of v0.20 bound object/vector stores after open
  • SharedDatabase for a cloneable, serialized Rust handle

Store create/bind/unbind/split management is CLI/native-Zig-only in v0.20; this crate keeps the existing object and vector APIs source-compatible.

Example

use zova::{Database, Step};

let mut db = Database::create("app.zova")?;
db.exec("create table notes(id integer primary key, body text not null)")?;

let mut insert = db.prepare("insert into notes(body) values (?1)")?;
insert.bind_text(1, "hello from Rust")?;
assert_eq!(insert.step()?, Step::Done);
# Ok::<(), zova::Error>(())

See the workspace README and examples for object and vector workflows.

App Events

Database::listen and Database::notify provide queue-only, same-process app events on one open Zova handle. Notifications are explicit and in-memory; they are delivered after commit and discarded on rollback. They are not durable, cross-process, replayable, or automatic mutation logs.