deq-runtime 0.3.0

deq: Real-time Quantum Error Correction Decoding System
[package]
name = "deq-runtime"
version = "0.3.0"
edition = "2024"
authors = ["Microsoft Corporation"]
description = "deq: Real-time Quantum Error Correction Decoding System"
keywords = ["QEC", "quantum-computing", "error-correction"]
categories = ["science"]
default-run = "deq-runtime-cli"
license = "MIT"
repository = "https://github.com/microsoft/qdk-ec"
homepage = "https://github.com/microsoft/qdk-ec"
documentation = "https://docs.rs/deq-runtime"
readme = "README.md"
include = [
    "src/**/*",
    "tests/**/*",
    "Cargo.toml",
    "build.rs",
    "cpp/tesseract/**/*",
]

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

[[bin]]
name = "deq-runtime-cli"
path = "src/main.rs"
required-features = ["cli"]

[profile.release]
debug = true

[features]
# to enable a feature, use `--features xxx`
default = ["cli", "tesseract", "simulator"]
cli = [
    "dep:clap",
    "dep:ctrlc",
    "dep:log",
    "dep:fastrace",
    "dep:structdoc",
    "dep:indicatif",
    "dep:tokio-stream",
    "tonic/channel",
    "tonic/router",
] # CLI binary, server, benchmark (not needed by library consumers)
python = ["dep:pyo3", "dep:pythonize"] # enable Python decoder (requires Python)
python_binding = [
    "python",
    "pyo3/extension-module",
] # bind to Python as extension module
tesseract = ["dep:cxx"] # enable Google's Tesseract beam-search decoder
simulator = [
    "dep:stim",
    "dep:rhai",
] # enable simulation (Stim sampling + Rhai scripting)
python_all = [
    "python_binding",
    "simulator",
    "cli",
    "tesseract",
]

[dependencies]
num-traits = "0.2.19"
serde = { version = "1.0.217", features = ["derive", "rc"] }
serde_json = { version = ">=1.0.138, <1.0.142", features = [
    "arbitrary_precision",
] }
hashbrown = "0.16.0"
ordered-float = "5.1.0"
pyo3 = { version = "0.27.1", features = [
    "multiple-pymethods",
    "abi3-py38",
    "macros",
    "auto-initialize",
    "generate-import-lib",
], optional = true }
clap = { version = "4.5.30", features = ["cargo", "derive"], optional = true }
rand = "0.10"
rand_xoshiro = "0.8.0"
tonic = { version = "0.14.2", default-features = false, features = [
    "codegen",
    "server",
] }
prost = "0.14.1"
tonic-prost = { version = "0.14.2", default-features = false }
tokio = { version = "1.48.0", features = ["rt-multi-thread"] }
tokio-util = "0.7"
tokio-stream = { version = "0.1.17", optional = true }
rayon = "1.11.0"
futures-util = "0.3.31"
structdoc = { version = "0.1.4", optional = true }
indicatif = { version = "0.18.2", optional = true }
log = { version = "0.4.28", optional = true }
rand_distr = "0.6.0"
binar = "0.1.1"
ctrlc = { version = "3.4.0", optional = true }
relay-bp = "0.2.2"
ndarray = "=0.16.1"
sprs = "=0.11.3"
fastrace = { version = "0.7.14", features = ["enable"], optional = true }
pythonize = { version = "0.27", optional = true }
stim = { version = "0.4.1", optional = true }
rhai = { version = "1", features = ["sync"], optional = true }
cxx = { version = "1.0", optional = true }

[build-dependencies]
tonic-prost-build = "0.14.2"
cxx-build = "1.0"

[dev-dependencies]
tempfile = "3"