[package] name = "ruvector-solver" version.workspace = true edition.workspace = true rust-version.workspace = true license.workspace = true authors.workspace = true repository.workspace = true description = "Sublinear-time solver for RuVector: O(log n) to O(√n) algorithms for sparse linear systems, PageRank, and spectral methods" keywords = ["linear-algebra", "sparse-matrix", "pagerank", "solver", "sublinear"] categories = ["mathematics", "science", "algorithms"] [features] default = ["neumann", "cg", "forward-push"] nalgebra-backend = ["nalgebra"] parallel = ["rayon", "crossbeam"] simd = [] wasm = [] full = ["nalgebra-backend", "parallel", "all-algorithms"] neumann = [] forward-push = [] backward-push = [] hybrid-random-walk = ["getrandom"] true-solver = ["neumann"] cg = [] bmssp = [] all-algorithms = ["neumann", "forward-push", "backward-push", "hybrid-random-walk", "true-solver", "cg", "bmssp"] [dependencies] serde = { workspace = true, features = ["derive"] } thiserror = { workspace = true } tracing = { workspace = true } rand = { workspace = true } nalgebra = { version = "0.33", default-features = false, features = ["std"], optional = true } rayon = { workspace = true, optional = true } crossbeam = { workspace = true, optional = true } getrandom = { version = "0.2", optional = true } dashmap = { workspace = true } parking_lot = { workspace = true } [target.'cfg(target_arch = "wasm32")'.dependencies] getrandom = { version = "0.2", features = ["js"] } [dev-dependencies] criterion = { workspace = true } proptest = { workspace = true } approx = "0.5" [[bench]] name = "solver_baseline" harness = false [[bench]] name = "solver_neumann" harness = false [[bench]] name = "solver_cg" harness = false [[bench]] name = "solver_push" harness = false [[bench]] name = "solver_e2e" harness = false [lints.rust] unexpected_cfgs = { level = "allow", priority = -1 } unused_imports = "allow" dead_code = "allow" unused_variables = "allow" [lints.clippy] pedantic = { level = "allow", priority = -2 } all = { level = "warn", priority = -1 } correctness = { level = "deny", priority = 0 } suspicious = { level = "deny", priority = 0 } needless_range_loop = "allow" manual_div_ceil = "allow" manual_is_multiple_of = "allow" manual_range_contains = "allow" redundant_field_names = "allow" len_zero = "allow" get_first = "allow" useless_vec = "allow" manual_clamp = "allow" unnecessary_map_or = "allow" needless_borrow = "allow" needless_borrows_for_generic_args = "allow" mut_from_ref = { level = "allow", priority = 1 }