[package]
name = "groggy"
version = "0.5.2"
edition = "2021"
description = "Groggy - High-performance graph analytics engine with unified storage views (Arrays, Matrices, Tables)"
license = "MIT"
homepage = "https://github.com/rollingstorms/groggy"
repository = "https://github.com/rollingstorms/groggy"
documentation = "https://groggy.readthedocs.io"
readme = "README.md"

[lib]
name = "groggy"
crate-type = ["rlib", "cdylib"]

[dependencies]
fastrand = "2.0"
pyo3 = { version = "0.20", features = ["extension-module"], optional = true }
petgraph = "0.6"
xxhash-rust = { version = "0.8", features = ["xxh3"] }
serde = { version = "1.0", features = ["derive"] }

# Tier 2: JIT Compilation
cranelift = "0.102"
cranelift-jit = "0.102"
cranelift-module = "0.102"
cranelift-native = "0.102"
cranelift-codegen = "0.102"
serde_json = "1.0"
rayon = "1.7"
parking_lot = "0.12"  # High-performance locks
dashmap = "5.4"       # Concurrent HashMap
ahash = "0.8"         # Fast hash algorithm
rustc-hash = "1.1"    # Fast FxHashMap for small keys
bitvec = "1.0"        # Efficient bit vectors for indexing
wide = "0.7"          # SIMD operations
once_cell = "1.18"
console = "0.15"      # Console utilities for display
csv = "1.3"           # CSV reading/writing
chrono = { version = "0.4", features = ["serde"] } # Date/time handling
anyhow = "1.0"
regex = "1.10" # Pattern matching for validation
tokio = { version = "1.0", features = ["full"] } # Async runtime
tokio-tungstenite = "0.21" # WebSocket server implementation
tokio-util = "0.7" # Tokio utilities including CancellationToken
futures-util = "0.3" # Futures utilities for WebSocket streams
askama = "0.12" # HTML templating for visualization
tower = "0.4" # Service abstractions for HTTP server
tower-http = "0.4" # HTTP utilities for static file serving
hyper = { version = "0.14", features = ["full"] } # HTTP server
uuid = { version = "1.0", features = ["v4"] } # Session ID generation
lazy_static = "1.4" # Global static variables for layout registry
sha1 = "0.10" # SHA1 hashing for WebSocket handshake
base64 = "0.21" # Base64 encoding for WebSocket handshake
ctrlc = "3.4" # Ctrl+C signal handling

[features]
default = []
python = ["pyo3"]
profiling = [] # Enable profiling timers
integration_tests_disabled = []

[dev-dependencies]
criterion = { version = "0.5", features = ["html_reports"] }
tempfile = "3.8"
