Skip to main content
Version: v1.0.0

Compatibility

Zova reports separate package, C ABI, SQLite, and storage-format versions. Changing one does not imply a change in the others.

VersionZova 1.0.0
Package1.0.0
C ABI1.0.0
Vendored SQLite3.53.4
Zova storage format11

Storage promise

Every Zova 1.x release can migrate databases created by every earlier 1.x release. Format 9—the format written by released Zova 0.26.1—is the only pre-1.0 format guaranteed a migration into 1.0.

Source formatv1.0.0 classificationAction
11currentopen normally
10migratableexplicitly migrate 10 → 11
9migratableexplicitly migrate 9 → 10 → 11
8 or olderunsupported legacyexport with a compatible older release
newer than 11unsupported futureuse a compatible newer Zova release

Opening a database never migrates it. Current files open; migratable files return MigrationRequired; legacy and future files return distinct errors. Each path leaves the source byte-identical.

Probe and migrate

Migration is offline and copy-forward. It writes a new destination and preserves the source:

zova format app.zova
zova migrate app.zova app-format-11.zova

zova format reports the source format, current format, earliest migratable format, compatibility class, and recommended action. Add --json for automation. zova migrate verifies the destination by default; --no-verify skips that final reopen.

Equivalent probe and migrate APIs are available through the C ABI, Rust, Python, Go, and JavaScript bindings.

Migration rules

  • The destination main database and bound-store siblings must not exist.
  • Bound stores migrate as one logical set and are published before the main database.
  • Staging needs free space roughly equal to the source set and a filesystem that supports hard links.
  • Migration takes an offline write lock while it plans and copies the source set.
  • User SQL schema and rows, public identities, objects, vectors, graphs, extension records, store identities, and ordering are preserved.
  • Extension-owned tables pass through unchanged and face normal extension validation when the destination opens.
  • Downgrade migration is unsupported.

An interrupted run can leave destination reservations, published bound stores, and a <destination>.migration-recovery/ directory. Stop every process using those paths, keep the destination and recovery directory together, then run the matching release's ownership-checking recovery script:

python3 scripts/recover-migration.py /path/to/app-format-11.zova

On Windows, use python if python3 is unavailable. The script removes only outputs proven to belong to that migration. If it refuses, preserve the files and investigate—do not force-delete or hand-publish staged files.

Keep artifacts aligned

Use the package, C header, static library, CLI, generated-C companion, and extensions from the same release. Go requires a matching C ABI archive. Native Zig-built artifacts can host trusted dynamic extensions; generated-C package artifacts cannot dynamically load them.

Read the v1.0.0 release notes and API stability contract before upgrading production applications.