Repository navigation
crabnet 0.1.0
First experimental release of crabnet, an embedded property-graph database for Rust.
Install with cargo add crabnet.
What is included
Crabnet is an experimental Rust 2024 embedded property-graph library backed by
bundled SQLite. It targets local tools, rebuildable indexes, and controlled
workloads. Git Graph is the acceptance application. Rust 1.99 is the minimum;
initial candidate qualification targets Ubuntu 24.04 x86-64 and local
DELETE-journal storage, with one writer and serial use of each connection.
The release includes the documented Cypher subset, typed scalar/graph/nested
results, parameterized reads and mutations, explicit transactions, node-property
uniqueness constraints, reusable compiled reads, read cursors with explicit
buffered fallback, cooperative query controls, and backup/restore. The
coverage, semantics, and cursor contracts
define the exact surface; this is not full openCypher conformance.
Storage and compatibility
Schema 5 is current. The first published release establishes the compatibility
baseline; unreleased development databases are not supported upgrade inputs.
Read-only opening and restore sources require the current schema. Current-format
reopening, backup/restore, recovery, and invalid-file rejection remain tested.
See the compatibility policy.
Within the 0.1 minor line, patch releases preserve the documented Rust source,
query, value and error-category contracts and schema 5. Exact error messages,
SQL, plans and opaque ID formats are not stable interfaces. Raising the minimum
Rust version or breaking these contracts requires a minor release under the
compatibility policy.
Corrections made during preparation
- Strings containing NUL retain characters after the NUL in length, slicing,
replacement, and comparison operations. - Integer conversion rejects out-of-range results with null rather than
clamping or rounding overflowing integer text through binary64. - Invalid negative string bounds produce the documented argument error while
preserving null/type precedence and lazy branch evaluation. - Commit retry guidance now explicitly distinguishes an error from rollback:
journal deletion can succeed before an error is reported, leaving writes
committed. Reconcile the stored outcome before retrying a non-idempotent
operation. See the bounded commit fault models.
Intentional differences and limits
The six reviewed TCK expected-error exclusions remain intentional: deleted
entities can expose their captured property/label snapshots, nested lists/maps
are supported property values, and supported fixed pattern predicates may be
projected as booleans. The first-release checklist
identifies each scenario. Other exclusions remain pinned and visible; no new
conformance claim follows from this review.
Temporal types, procedures and portions of the Cypher language remain unsupported.
Some reads buffer; resource accounting is not a whole-process memory cap.
WAL, network filesystems, multi-writer operation, arbitrary external SQLite
modification, persistent/partial I/O, power-loss recovery and corruption repair
are not qualified. Review support before adopting the library.
Crabnet's code is MIT OR Apache-2.0. Vendored TCK material and dependencies
retain their own licenses and notices; see third-party materials.
Release validation
Source: 0175d09166d5eb011114d4756993dd024ff0270c.
- Ubuntu 24.04 / Rust 1.99 CI: tests, TCK, documentation examples, formatting, and Clippy.
- Git Graph acceptance passed with its compiled compare fix; the engine was unchanged by the final fixture cleanup.
- Earlier clean-source package rehearsals passed. The maintainer waived a repeat package rehearsal after the final fixture cleanup and authorized publication following successful CI.
Published crate SHA-256: 0ef4e31de95304231cdd0ba749608f751d080c812c4fbee367fd8fa478a365fd.