[package] name = "graph" version = "0.1.4" edition = "2021" rust-version = "1.95" description = "Sub-millisecond graph traversal for PostgreSQL" license = "Apache-2.0" [lib] crate-type = ["cdylib", "rlib"] [features] # Official support follows PostgreSQL majors that still receive upstream fixes: # pg14 through pg18. The pg13 feature remains available as legacy best-effort # because pgrx 0.18 still exposes it, but release gates do not cover PG13. # Keep the supported matrix aligned with docs/user_guide/installation.mdx and # graph/tests/heavy/run_pg_matrix.sh. default = ["pg17"] pg13 = ["pgrx/pg13", "pgrx-tests/pg13"] pg14 = ["pgrx/pg14", "pgrx-tests/pg14"] pg15 = ["pgrx/pg15", "pgrx-tests/pg15"] pg16 = ["pgrx/pg16", "pgrx-tests/pg16"] pg17 = ["pgrx/pg17", "pgrx-tests/pg17"] pg18 = ["pgrx/pg18", "pgrx-tests/pg18"] pg_test = [] fuzzing = [] development = [] [dependencies] pgrx = "=0.18.0" roaring = { version = "=0.10.12", features = ["serde"] } xxhash-rust = { version = "=0.8.15", features = ["xxh3"] } bitvec = "=1.0.1" bincode = "=1.3.3" crc32fast = "=1.5.0" thiserror = "=2.0.18" memmap2 = "=0.9.10" serde = { version = "=1.0.228", features = ["derive"] } serde_json = "=1.0.149" [lints.rust] rust_2018_idioms = { level = "warn", priority = -1 } missing_docs = "warn" unsafe_op_in_unsafe_fn = "deny" unused_must_use = "deny" [lints.rustdoc] broken_intra_doc_links = "warn" bare_urls = "warn" [lints.clippy] clone_on_copy = "deny" if_same_then_else = "deny" needless_question_mark = "deny" never_loop = "deny" obfuscated_if_else = "deny" too_many_arguments = "deny" undocumented_unsafe_blocks = "deny" # Current pgrx SQL tests and panic-boundary helpers intentionally use # expect/unwrap/panic for fixture setup and invariant checks. Keep these # exceptions explicit until the production unwrap audit is complete. expect_used = "allow" panic = "allow" unwrap_used = "allow" [dev-dependencies] pgrx-tests = "=0.18.0" criterion = { version = "=0.5.1", features = ["html_reports"] } proptest = "=1.11.0" [[bench]] name = "bfs_bench" harness = false [profile.dev] panic = "unwind" [profile.release] panic = "unwind" opt-level = 3 lto = "fat" codegen-units = 1