graphdblite 0.1.1

Embedded graph database with Cypher support. SQLite-grade simplicity, graph-native performance.
Documentation
[workspace]
members = [".", "bindings/python", "bindings/ffi", "bindings/node"]
resolver = "2"

[workspace.package]
version = "0.1.1"
edition = "2021"
license = "MIT"
rust-version = "1.90"
repository = "https://github.com/ds7n/graphdblite"
homepage = "https://github.com/ds7n/graphdblite"
documentation = "https://docs.rs/graphdblite"
readme = "README.md"
keywords = ["graph", "database", "cypher", "embedded", "sqlite"]
categories = ["database", "database-implementations"]

[package]
name = "graphdblite"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
description = "Embedded graph database with Cypher support. SQLite-grade simplicity, graph-native performance."
license.workspace = true
repository.workspace = true
homepage.workspace = true
documentation.workspace = true
readme.workspace = true
keywords.workspace = true
categories.workspace = true
exclude = [
    "tests/tck/features/**",
    "tests/tck/graphs/**",
    "tests/tck/skiplist.txt",
]

[lib]
crate-type = ["lib"]

[dependencies]
rusqlite = { version = "0.32", features = ["bundled"] }
rmp-serde = "1"
serde = { version = "1", features = ["derive"] }
indexmap = "2"
pest = "2"
pest_derive = "2"
chrono = { version = "0.4.44", features = ["serde"] }
chrono-tz = "0.10.4"
tracing = "0.1"
# Optional, only pulled in by the `tck-support` feature.
cucumber = { version = "0.21", optional = true }
anyhow = { version = "1", optional = true }

[features]
# Compiles `graphdblite::tck_support`, the openCypher TCK conformance harness's
# step definitions and Gherkin world. Internal — used only by `tests/tck.rs`.
# Enable with: cargo test --test tck --features tck-support
tck-support = ["dep:cucumber", "dep:anyhow"]
# Marker feature gating the alloc-regression test (`tests/alloc_regression.rs`).
# `dhat` is always a dev-dep but only activates when this feature is on, so
# regular `cargo test` is unaffected.
# Run with: cargo test --test alloc_regression --features dhat-heap --release
dhat-heap = []
# Exposes a hidden `__fuzz` module re-exporting the parser and planner entry
# points. Only intended for `cargo fuzz` targets in `fuzz/` — not part of the
# public API and offers no semver guarantees.
fuzzing = []

[dev-dependencies]
tempfile = "3"
pollster = "0.3"
dhat = "0.3"

[[bin]]
name = "graphdblite"
path = "src/bin/cli.rs"

# openCypher TCK conformance harness — see tests/tck.rs.
# Uses a custom main (not libtest) because cucumber-rs drives its own runner.
[[test]]
name = "tck"
harness = false
required-features = ["tck-support"]

# Column-header golden test — see tests/record_columns_golden.rs.
# Drives the same TCK feature suite as `tck` and asserts each scenario's
# first-row column headers match the committed golden. Phase 0.2 of
# `plans/record-v2.md`.
[[test]]
name = "record_columns_golden"
harness = false
required-features = ["tck-support"]

# Allocation-count regression test — see tests/alloc_regression.rs.
# Profiles a fixed query set under dhat and asserts per-query allocation
# counts stay within ±5% of a committed baseline. Phase 0.3 of
# `plans/record-v2.md`.
[[test]]
name = "alloc_regression"
harness = false
required-features = ["dhat-heap"]