mnestic

Migrating from CozoDB

Moving from CozoDB to mnestic is a dependency change. The query language (CozoScript) and the engine semantics are unchanged, and the importable library name stays cozo, so your application code does not change.

mnestic

mnestic forks CozoDB at upstream 481af05 (2024-12-04). Your data files, schemas, and queries are compatible.

Swap the dependency

The published crate is mnestic, but its [lib] name is cozo. Use Cargo's rename idiom so the dependency key stays cozo — that keeps both cozo/feature references and use cozo::… working unchanged:

# Cargo.toml
[dependencies]
cozo = { package = "mnestic", version = "0.8" }
 
# with the RocksDB backend:
# cozo = { package = "mnestic", version = "0.8", features = ["storage-rocksdb"] }

If you depend on a local checkout instead of crates.io:

cozo = { package = "mnestic", path = "../mnestic/cozo-core" }

No source changes are required — use cozo::DbInstance; and friends resolve to mnestic.

What you get immediately

  • Unreleased upstream fixes for free. The fork point is 30 commits ahead of the published 0.7.6 crate, including the stored_prefix_join correctness fix.
  • Faster lookups. Equality post-filters on stored relations now compile to keyed prefix lookups — see Equality pushdown.
  • Faster, non-blocking HNSW builds on RocksDB — see Non-blocking HNSW builds.
  • A keyword-prefixed identifier parser fix (nullable_column, trueValue, falsey now parse in value positions).

What is new (opt-in)

These are additive — existing code is unaffected until you call them:

What stays the same

  • CozoScript syntax and semantics.
  • The storage backends (in-memory, SQLite, RocksDB) and their on-disk formats.
  • The DbInstance / Db API surface you already use.

Note

mnestic is an independent fork and is not affiliated with or endorsed by the original CozoDB authors. See License & attribution.