[package]
exclude = ["tests/", "benches/", "docs/", ".github/", "book/", ".pmat/", "target/", ".profraw", ".profdata", ".vscode/", ".idea/", "proptest-regressions/"]
name = "aprender-db"
version.workspace = true
edition.workspace = true
authors.workspace = true
license.workspace = true
description = "GPU-first embedded analytics database with SIMD fallback and SQL query interface"
repository.workspace = true
keywords = ["database", "gpu", "simd", "analytics", "wasm"]
categories = ["database", "science", "wasm"]
rust-version.workspace = true
[lib]
name = "trueno_db"
[dependencies]
trueno = "0.17"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
chrono = { version = "0.4", features = ["serde"] }
wgpu = { version = "22", optional = true, features = ["wgsl"] }
bytemuck = { version = "1", features = ["derive"], optional = true }
futures-intrusive = { version = "0.5", optional = true }
arrow = { version = "57", default-features = false }
parquet = { version = "57", default-features = false, features = ["arrow"], optional = true }
sqlparser = "0.52"
tokio = { version = "1", features = ["full"], optional = true }
rayon = { version = "1.8", optional = true }
dashmap = "6.0"
rustc-hash = "2.0"
batuta-common = "0.1"
lz4_flex = { version = "0.11", optional = true }
zstd = { version = "0.13", optional = true }
axum = { version = "0.7", optional = true }
clap = { version = "4.5", features = ["derive"], optional = true }
serde_yaml_ng = { version = "0.10", optional = true }
thiserror = "2"
anyhow = "1"
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
[build-dependencies]
serde = { version = "1", features = ["derive"] }
serde_yaml_ng = "0.10"
[dev-dependencies]
criterion = { version = "0.5", features = ["html_reports", "async_tokio"] }
proptest = "1.5"
quickcheck = "1"
rand = "0.8"
duckdb = { version = "1.1", features = ["bundled"] }
rusqlite = "0.32"
cargo-llvm-cov = "0.6"
[target.'cfg(target_arch = "wasm32")'.dependencies]
wasm-bindgen = "0.2"
wasm-bindgen-futures = "0.4"
js-sys = "0.3"
console_error_panic_hook = "0.1"
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
serde-wasm-bindgen = "0.6"
web-sys = { version = "0.3", features = [
"console",
"Window",
"Navigator",
"Performance",
"Gpu",
"GpuAdapter",
"GpuDevice",
"Request",
"RequestInit",
"Response",
"Headers",
"RequestMode",
"RequestCredentials",
] }
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
tonic = { version = "0.12", optional = true }
prost = { version = "0.13", optional = true }
[[bin]]
name = "aprender-db"
path = "src/main.rs"
required-features = ["server"]
[features]
default = ["simd", "tokio", "rayon", "parquet-io", "server"]
parquet-io = ["dep:parquet"]
server = ["dep:axum", "dep:clap", "dep:serde_yaml_ng", "tokio", "parquet-io"]
simd = []
gpu = ["dep:wgpu", "dep:bytemuck", "dep:futures-intrusive"]
compression = ["dep:lz4_flex", "dep:zstd"]
distributed = ["tonic", "prost"]
wasm = []
[[bench]]
name = "storage_benchmarks"
harness = false
[[bench]]
name = "aggregations"
harness = false
[[bench]]
name = "pcie_analysis"
harness = false
[[bench]]
name = "competitive_benchmarks"
harness = false
[[bench]]
name = "kernel_fusion"
harness = false
[lints]
workspace = true
[profile.test]
opt-level = 1
[profile.release]
opt-level = 3
lto = "fat"
codegen-units = 1
strip = false
[profile.bench]
inherits = "release"
[[example]]
name = "gpu_aggregations"
required-features = ["gpu"]
[[example]]
name = "gpu_sales_analytics"
required-features = ["gpu"]
[package.metadata.pmat]
quality_gates = true
tdg_score_minimum = 85
mutation_testing = true
mutation_kill_rate_minimum = 85
coverage_minimum = 85
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--generate-link-to-definition"]
[package.metadata.release]
shared-version = true
[[package.metadata.release.pre-release-replacements]]
file = "CHANGELOG.md"
search = "## \\[Unreleased\\]"
replace = "## [{{version}}] - {{date}}"
[profile.dev]
panic = "abort"