Skip to content

crabnet 0.1.0

Latest

Choose a tag to compare

@a-poor a-poor released this 14 Oct 17:59
· 1 commit to main since this release

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.