rustqueue 0.2.0

Background jobs without infrastructure — embeddable job queue with zero external dependencies
Documentation
[package]
name = "rustqueue"
version = "0.2.0"
edition = "2024"
description = "Background jobs without infrastructure — embeddable job queue with zero external dependencies"
license = "MIT OR Apache-2.0"
repository = "https://github.com/ferax564/rustqueue"
homepage = "https://rustqueue.dev"
keywords = ["job-queue", "background-jobs", "embedded", "async", "task-queue"]
categories = ["asynchronous", "web-programming", "database-implementations"]
rust-version = "1.85"

[[bin]]
name = "rustqueue"
path = "src/main.rs"

[lib]
name = "rustqueue"
path = "src/lib.rs"

[dependencies]
# Async runtime
tokio = { version = "1", features = ["full"] }

# HTTP framework
axum = { version = "0.8", features = ["ws", "macros"] }
tower = "0.5"
tower-http = { version = "0.6", features = ["cors", "trace"] }

# Serialization
serde = { version = "1", features = ["derive"] }
serde_json = "1"

# Storage - embedded (default)
redb = "2"
rusqlite = { version = "0.32", features = ["bundled"], optional = true }
sqlx = { version = "0.8", features = ["runtime-tokio", "postgres", "chrono", "uuid", "json"], optional = true }

# CLI
clap = { version = "4", features = ["derive", "env"] }
reqwest = { version = "0.12", features = ["json"] }

# Webhook signing (HMAC-SHA256)
hmac = "0.12"
sha2 = "0.10"
hex = "0.4"

# Configuration
config = "0.15"
toml = "0.9"

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

# OpenTelemetry (optional, behind `otel` feature)
opentelemetry = { version = "0.27", optional = true }
opentelemetry-otlp = { version = "0.27", optional = true }
opentelemetry_sdk = { version = "0.27", features = ["rt-tokio"], optional = true }
tracing-opentelemetry = { version = "0.28", optional = true }

# Metrics
metrics = "0.24"
metrics-exporter-prometheus = "0.16"

# Time / scheduling
chrono = { version = "0.4", features = ["serde"] }
croner = "2"

# IDs
uuid = { version = "1", features = ["v7", "serde"] }

# Async trait
async-trait = "0.1"

# Error handling
thiserror = "2"
anyhow = "1"

# TLS (optional)
rustls = { version = "0.23", optional = true }
tokio-rustls = { version = "0.26", optional = true }
rustls-pemfile = { version = "2", optional = true }

# Zero-copy byte buffers
bytes = "1"

# Concurrent data structures
dashmap = "6"

# Dashboard embedding
rust-embed = { version = "8", features = ["interpolate-folder-path"] }

# OpenAPI spec generation
utoipa = { version = "5", features = ["axum_extras", "chrono", "uuid"] }
utoipa-scalar = { version = "0.3", features = ["axum"] }

[dev-dependencies]
# Testing
tokio-test = "0.4"
reqwest = { version = "0.12", features = ["json"] }
proptest = "1"
criterion = { version = "0.5", features = ["html_reports", "async_tokio"] }
tempfile = "3"
assert_cmd = "2"
predicates = "3"
tokio-tungstenite = "0.28"
futures-util = "0.3"
sysinfo = "0.30"

[features]
default = ["cli"]
cli = []
axum-integration = []
tls = ["rustls", "tokio-rustls", "rustls-pemfile"]
otel = ["opentelemetry", "opentelemetry-otlp", "opentelemetry_sdk", "tracing-opentelemetry"]
sqlite = ["rusqlite"]
postgres = ["sqlx"]

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

[profile.release]
opt-level = 3
lto = "thin"
strip = true
codegen-units = 1