[workspace]
members = ["."]
exclude = ["python", "node", "fuzz", "omendb-core"]
resolver = "2"

[package]
name = "omendb"
version = "0.0.21"
edition = "2021"
authors = ["OmenDB Team"]
description = "Fast embedded vector database with HNSW + ACORN-1 filtered search"
repository = "https://github.com/omendb/omendb"
license-file = "LICENSE"
keywords = ["vector-database", "embedded", "ai", "hnsw", "acorn"]
categories = ["database", "embedded"]
readme = "README.md"
exclude = [".hhg/", ".claude/", ".github/", "benchmarks/", "scripts/", "*.md", "!README.md"]

[lib]
name = "omendb_core"
path = "src/lib.rs"
crate-type = ["lib", "cdylib", "staticlib"]

[dependencies]
# Error handling
anyhow = "1.0"
thiserror = "1.0"

# Serialization
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
bincode = "1.3"

# Parallel processing
rayon = "1.10"
parking_lot = "0.12"

# HNSW dependencies
ordered-float = "4.2"
lru = "0.12"
memmap2 = "0.9"

# Logging
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["json", "env-filter"] }

# WAL support
crc32fast = "1.4"
chrono = { version = "0.4", features = ["serde"] }

# Testing
tempfile = "3.8"
rand = "0.8"
rand_distr = "0.4"

# Utilities
lazy_static = "1.4"
once_cell = "1.19"

# SIMD multiversioning
multiversion = "0.7"

# Full-text search
tantivy = { version = "0.25", default-features = false, features = ["mmap", "lz4-compression"] }

# Async (for tantivy)
tokio = { version = "1.48.0", features = ["full"] }

# Bit manipulation
fixedbitset = "0.5.7"
smallvec = "1.13"
roaring = "0.11"

# Concurrency
arc-swap = "1.7.1"
rustc-hash = "2.1.1"

[dev-dependencies]
criterion = "0.5"
proptest = "1.4"
quickcheck = "1.0"
tempfile = "3.23"

[features]
default = []
ffi = []           # Enable C FFI bindings
profile_search = []

[profile.release]
debug = true
lto = "thin"
codegen-units = 1

[profile.bench]
lto = "thin"
codegen-units = 1

[[bench]]
name = "distance_bench"
harness = false

[[bench]]
name = "search_bench"
harness = false

[[bench]]
name = "hybrid_bench"
harness = false

[[bench]]
name = "fastscan_bench"
harness = false

[[bench]]
name = "adc_bench"
harness = false

[[bench]]
name = "sq8_bench"
harness = false
