[package]
name = "rustkernel-core"
description = "Core abstractions, traits, and registry for RustKernels GPU kernel library"
version.workspace = true
edition.workspace = true
rust-version.workspace = true
authors.workspace = true
license.workspace = true
repository.workspace = true
keywords.workspace = true
categories.workspace = true
[features]
default = []
enterprise = ["crypto", "auth", "tls", "alerting", "rate-limiting", "multi-tenancy"]
crypto = ["dep:ring", "dep:base64"]
auth = ["dep:jsonwebtoken", "crypto"]
tls = ["dep:rustls", "dep:tokio-rustls"]
alerting = []
rate-limiting = []
multi-tenancy = []
otlp = ["dep:opentelemetry", "dep:opentelemetry_sdk", "dep:opentelemetry-otlp", "dep:tracing-opentelemetry"]
structured-logging = []
metrics = ["dep:metrics", "dep:metrics-exporter-prometheus"]
axum-integration = ["dep:axum", "dep:tower", "dep:tower-http"]
grpc-integration = ["dep:tonic", "dep:prost", "dep:prost-types"]
[dependencies]
ringkernel-core = { workspace = true }
ringkernel-derive = { workspace = true }
tokio = { workspace = true }
async-trait = { workspace = true }
futures = { workspace = true }
actix = { workspace = true }
serde = { workspace = true }
serde_json = { workspace = true }
toml = { workspace = true }
rkyv = { workspace = true }
bytemuck = { workspace = true }
thiserror = { workspace = true }
anyhow = { workspace = true }
tracing = { workspace = true }
tracing-subscriber = { workspace = true }
rand = { workspace = true }
tracing-opentelemetry = { workspace = true, optional = true }
opentelemetry = { workspace = true, optional = true }
opentelemetry_sdk = { workspace = true, optional = true }
opentelemetry-otlp = { workspace = true, optional = true }
metrics = { workspace = true, optional = true }
metrics-exporter-prometheus = { workspace = true, optional = true }
chrono = { workspace = true }
hashbrown = { workspace = true }
indexmap = { workspace = true }
smallvec = { workspace = true }
uuid = { workspace = true }
ring = { workspace = true, optional = true }
base64 = { workspace = true, optional = true }
jsonwebtoken = { workspace = true, optional = true }
rustls = { workspace = true, optional = true }
tokio-rustls = { workspace = true, optional = true }
axum = { workspace = true, optional = true }
tower = { workspace = true, optional = true }
tower-http = { workspace = true, optional = true }
tonic = { workspace = true, optional = true }
prost = { workspace = true, optional = true }
prost-types = { workspace = true, optional = true }
[dev-dependencies]
tokio = { workspace = true, features = ["test-util", "macros"] }
proptest = { workspace = true }