[package] name = "ruvector-graph" version.workspace = true edition.workspace = true rust-version.workspace = true license.workspace = true authors.workspace = true repository.workspace = true readme = "README.md" description = "Distributed Neo4j-compatible hypergraph database with SIMD optimization" [dependencies] # RuVector dependencies ruvector-core = { version = "2.0.1", path = "../ruvector-core", default-features = false, features = ["simd", "parallel"] } ruvector-raft = { version = "2.0.1", path = "../ruvector-raft", optional = true } ruvector-cluster = { version = "2.0.1", path = "../ruvector-cluster", optional = true } ruvector-replication = { version = "2.0.1", path = "../ruvector-replication", optional = true } # Storage and indexing (optional for WASM) redb = { workspace = true, optional = true } memmap2 = { workspace = true, optional = true } hnsw_rs = { workspace = true, optional = true } # SIMD and performance simsimd = { workspace = true, optional = true } rayon = { workspace = true } crossbeam = { workspace = true } num_cpus = "1.16" # Serialization rkyv = { workspace = true } bincode = { workspace = true } serde = { workspace = true } serde_json = { workspace = true } # Async runtime (optional for WASM) tokio = { workspace = true, features = ["rt-multi-thread", "sync", "macros", "time", "net"], optional = true } futures = { workspace = true, optional = true } # Error handling and logging thiserror = { workspace = true } anyhow = { workspace = true } tracing = { workspace = true } # Data structures dashmap = { workspace = true } parking_lot = { workspace = true } once_cell = { workspace = true } # Math and numerics ndarray = { workspace = true } rand = { workspace = true } rand_distr = { workspace = true } ordered-float = "4.2" # Time and UUID chrono = { workspace = true } uuid = { workspace = true, features = ["v4", "serde"] } # Graph algorithms and partitioning petgraph = "0.6" roaring = "0.10" # Roaring bitmaps for label indexes # Query parsing (Cypher) nom = "7.1" nom_locate = "4.2" pest = { version = "2.7", optional = true } pest_derive = { version = "2.7", optional = true } lalrpop-util = { version = "0.21", optional = true } # Cache lru = "0.16" moka = { version = "0.12", features = ["future"], optional = true } # Compression (for storage optimization, optional for WASM) zstd = { version = "0.13", optional = true } lz4 = { version = "1.24", optional = true } # Networking (for federation) tonic = { version = "0.12", features = ["transport"], optional = true } prost = { version = "0.13", optional = true } tower = { version = "0.4", optional = true } hyper = { version = "1.4", optional = true } # Hashing for sharding blake3 = { version = "1.5", optional = true } xxhash-rust = { version = "0.8", features = ["xxh3"], optional = true } # Metrics prometheus = { version = "0.14", optional = true } [dev-dependencies] criterion = { workspace = true } proptest = { workspace = true } mockall = { workspace = true } tempfile = "3.13" tracing-subscriber = { workspace = true } tokio-test = "0.4" # Benchmark datasets csv = "1.3" [build-dependencies] pest_generator = "2.7" [features] default = ["full"] # Full feature set (non-WASM) full = ["simd", "storage", "async-runtime", "compression", "hnsw_rs", "ruvector-core/hnsw"] # SIMD optimizations simd = ["ruvector-core/simd", "simsimd"] # Storage backends storage = ["redb", "memmap2"] # Async runtime support async-runtime = ["tokio", "futures", "moka"] # Compression support compression = ["zstd", "lz4"] # WASM-compatible minimal build (parser + core graph operations) wasm = [] # Distributed deployment with RAFT distributed = ["ruvector-raft", "ruvector-cluster", "ruvector-replication", "blake3", "xxhash-rust", "full"] # Cross-cluster federation federation = ["tonic", "prost", "tower", "hyper", "distributed"] # Advanced query optimization jit = [] # JIT compilation for hot paths (future) # Monitoring and metrics metrics = ["prometheus"] # Full-text search support fulltext = [] # Geospatial indexing geospatial = [] # Temporal graph support (time-varying graphs) temporal = [] # Query parser implementations cypher-pest = ["pest", "pest_derive"] cypher-lalrpop = ["lalrpop-util"] [[example]] name = "test_cypher_parser" path = "examples/test_cypher_parser.rs" [[bench]] name = "new_capabilities_bench" harness = false [lib] crate-type = ["rlib"] bench = false [package.metadata.docs.rs] all-features = true rustdoc-args = ["--cfg", "docsrs"] # Research-tier crate, doc/style churn deferred per workspace cleanup pass. # Style-only clippy lints downgraded for all targets; correctness lints remain. [lints.rust] dead_code = "allow" unused_variables = "allow" unused_imports = "allow" unused_mut = "allow" unused_assignments = "allow" unused_parens = "allow" unused_doc_comments = "allow" unused_attributes = "allow" unused_comparisons = "allow" unused_must_use = "allow" unexpected_cfgs = "allow" elided_lifetimes_in_paths = "allow" mismatched_lifetime_syntaxes = "allow" let_underscore_drop = "allow" [lints.clippy] pedantic = { level = "allow", priority = -1 } module_name_repetitions = "allow" must_use_candidate = "allow" missing_errors_doc = "allow" missing_panics_doc = "allow" unnecessary_lazy_evaluations = "allow" comparison_chain = "allow" needless_range_loop = "allow" redundant_closure = "allow" useless_vec = "allow" needless_borrows_for_generic_args = "allow" map_entry = "allow" manual_strip = "allow" single_match = "allow" collapsible_if = "allow" collapsible_match = "allow" collapsible_else_if = "allow" large_enum_variant = "allow" should_implement_trait = "allow" only_used_in_recursion = "allow" field_reassign_with_default = "allow" iter_cloned_collect = "allow" explicit_auto_deref = "allow" let_unit_value = "allow" assertions_on_constants = "allow" mem_replace_with_default = "allow" excessive_precision = "allow" manual_div_ceil = "allow" or_fun_call = "allow" unwrap_or_default = "allow" manual_range_contains = "allow" manual_clamp = "allow" single_match_else = "allow" single_char_add_str = "allow" useless_format = "allow" comparison_to_empty = "allow" filter_map_bool_then = "allow" unnecessary_filter_map = "allow" redundant_pattern_matching = "allow" iter_kv_map = "allow" needless_borrow = "allow" ptr_arg = "allow" new_without_default = "allow" default_trait_access = "allow" clone_on_copy = "allow" nonminimal_bool = "allow" absurd_extreme_comparisons = "allow" useless_conversion = "allow" type_complexity = "allow" get_first = "allow" needless_return = "allow" redundant_field_names = "allow" iter_nth_zero = "allow" redundant_clone = "allow" needless_collect = "allow" same_item_push = "allow" while_let_loop = "allow" while_let_on_iterator = "allow" for_kv_map = "allow" unused_unit = "allow" redundant_pattern = "allow" let_and_return = "allow" needless_lifetimes = "allow" filter_next = "allow" manual_map = "allow" redundant_closure_call = "allow" trivial_regex = "allow" int_plus_one = "allow" cmp_owned = "allow" redundant_static_lifetimes = "allow" single_component_path_imports = "allow" option_as_ref_deref = "allow" map_clone = "allow" if_same_then_else = "allow" partialeq_to_none = "allow" wrong_self_convention = "allow" min_max = "allow" neg_multiply = "allow" needless_pass_by_ref_mut = "allow" useless_attribute = "allow" single_char_pattern = "allow" iter_skip_zero = "allow" unnecessary_unwrap = "allow" ref_option = "allow" missing_const_for_fn = "allow" needless_question_mark = "allow" erasing_op = "allow" float_cmp = "allow" approx_constant = "allow" op_ref = "allow" let_underscore_lock = "allow" useless_let_if_seq = "allow" extra_unused_lifetimes = "allow" derive_partial_eq_without_eq = "allow" needless_late_init = "allow" derivable_impls = "allow" unnecessary_to_owned = "allow" missing_safety_doc = "allow" tabs_in_doc_comments = "allow" doc_lazy_continuation = "allow" empty_line_after_doc_comments = "allow" doc_overindented_list_items = "allow" elidable_lifetime_names = "allow" non_canonical_partial_ord_impl = "allow" out_of_bounds_indexing = "allow" overly_complex_bool_expr = "allow" len_zero = "allow" needless_doctest_main = "allow" match_like_matches_macro = "allow" match_on_vec_items = "allow" identity_op = "allow" match_single_binding = "allow" needless_match = "allow" unnecessary_map_or = "allow" unnecessary_cast = "allow" collapsible_str_replace = "allow" single_element_loop = "allow" unnecessary_min_or_max = "allow" unnecessary_wraps = "allow" manual_flatten = "allow" manual_memcpy = "allow" explicit_iter_loop = "allow" zero_repeat_side_effects = "allow" unbuffered_bytes = "allow" to_string_in_format_args = "allow" useless_asref = "allow" single_char_lifetime_names = "allow" mut_range_bound = "allow" unnecessary_sort_by = "allow" assign_op_pattern = "allow"