[package]
name = "haystackfm"
version = "0.3.0"
edition = "2021"
rust-version = "1.87"
description = "GPU-accelerated FM-index construction for DNA sequences via WebGPU"
license = "Apache-2.0"
repository = "https://github.com/sriram98v/haystackfm"
documentation = "https://docs.rs/haystackfm"
readme = "README.md"
authors = ["sriram98v <sriram.98v@gmail.com>"]
keywords = ["fm-index", "bioinformatics", "webgpu", "dna", "suffix-array"]
categories = ["algorithms", "science", "data-structures", "wasm"]
exclude = ["/web", "/docs", "/.github", "/graphify-out", "/.pi", "/.claude", "/CLAUDE.md"]
[lib]
crate-type = ["cdylib", "rlib"]
[features]
default = ["cpu"]
cpu = []
gpu = ["dep:wgpu", "dep:bytemuck", "dep:pollster", "dep:futures-channel"]
wasm = ["gpu", "dep:wasm-bindgen", "dep:wasm-bindgen-futures", "dep:js-sys", "dep:web-sys"]
[dependencies]
thiserror = "2"
log = "0.4"
serde = { version = "1", features = ["derive"] }
bincode = "1"
wgpu = { version = "24", optional = true }
bytemuck = { version = "1", features = ["derive"], optional = true }
pollster = { version = "0.4", optional = true }
futures-channel = { version = "0.3", optional = true }
wasm-bindgen = { version = "0.2", optional = true }
wasm-bindgen-futures = { version = "0.4", optional = true }
js-sys = { version = "0.3", optional = true }
web-sys = { version = "0.3", optional = true, features = ["console"] }
psacak = "0.1.0"
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
rayon = "1"
[package.metadata.wasm-pack.profile.release]
wasm-opt = ["-Oz", "--enable-mutable-globals"]
[profile.release]
opt-level = "z"
lto = true
codegen-units = 1
[dev-dependencies]
proptest = "1"
criterion = { version = "0.5", features = ["html_reports"] }
pollster = "0.4"
rand = "0.9"
[[bench]]
name = "construction"
harness = false
[[bench]]
name = "query"
harness = false
[[bench]]
name = "cpu_vs_gpu"
harness = false
[[bench]]
name = "locate_bench"
harness = false
required-features = ["gpu"]
[[bench]]
name = "mem_bench"
harness = false
required-features = ["gpu"]
[[bench]]
name = "mem_positions_bench"
harness = false
required-features = ["gpu"]