[package]
edition = "2024"
rust-version = "1.99"
name = "harmos-runtime"
version = "0.1.2"
build = false
publish = true
autolib = false
autobins = false
autoexamples = false
autotests = false
autobenches = false
description = "Harmos runtime: managed state, undo, recovery, background work and typed streams."
readme = false
license = "Apache-2.0"
[features]
default = []
generate-proto = [
"dep:harmos-packaging",
"harmos-packaging/generate-proto",
]
grpc = [
"harmos-sdk/grpc",
"generate-proto",
"dep:tonic-reflection",
"dep:http-body",
"dep:heck",
"dep:bytes",
"dep:tonic",
"dep:prost-reflect",
"dep:tonic-web",
"dep:tower",
"dep:tower-http",
"tonic/tls-ring",
]
plugin = [
"dep:petgraph",
"dep:semver",
"semver/serde",
"dep:harmos-packaging",
]
plugin-guest = [
"plugin",
"dep:harmos-guest",
"harmos-guest/kit",
"harmos-guest/derive",
"dep:wasmtime",
]
plugin-sidecar = [
"plugin",
"dep:harmos-sidecar",
"harmos-sidecar/kit",
"harmos-sidecar/derive",
"tokio/io-util",
"tokio/process",
]
signal = []
signal-fft = [
"signal",
"harmos-storage/fft",
]
simulation = ["tokio/test-util"]
[lib]
name = "harmos_runtime"
path = "src/lib.rs"
[[bin]]
name = "harmos-stream-consumer-fixture"
path = "tests/fixtures/stream_consumer.rs"
test = false
bench = false
required-features = ["plugin-sidecar"]
[[test]]
name = "integration"
path = "tests/integration/main.rs"
[[test]]
name = "acceptance"
path = "tests/acceptance/main.rs"
[[test]]
name = "system"
path = "tests/system/main.rs"
[[bench]]
name = "integration-operations"
path = "benches/operations/main.rs"
harness = false
[[bench]]
name = "integration-runtime"
path = "benches/runtime/main.rs"
harness = false
[[bench]]
name = "integration-sidecar"
path = "benches/sidecar/main.rs"
harness = false
required-features = ["plugin-sidecar"]
[[bench]]
name = "integration-simulation"
path = "benches/simulation/main.rs"
harness = false
required-features = ["simulation"]
[[bench]]
name = "integration-storage"
path = "benches/storage/main.rs"
harness = false
[[bench]]
name = "integration-streams"
path = "benches/streams/main.rs"
harness = false
[[bench]]
name = "system-sidecar"
path = "benches/sidecar/system.rs"
harness = false
required-features = ["plugin-sidecar"]
[dependencies.bytes]
version = "1.12"
optional = true
default-features = false
[dependencies.futures-core]
version = "0.3"
default-features = true
[dependencies.futures-util]
version = "0.3"
features = ["std"]
default-features = false
[dependencies.getrandom]
version = "0.4.3"
features = [
"std",
"wasm_js",
]
default-features = false
[dependencies.harmos-domain]
version = "0.1.1"
features = ["derive"]
default-features = false
[dependencies.harmos-guest]
version = "0.1.1"
optional = true
default-features = false
[dependencies.harmos-macros]
version = "0.1.1"
default-features = true
[dependencies.harmos-packaging]
version = "0.1.1"
optional = true
default-features = false
[dependencies.harmos-sdk]
version = "0.1.1"
features = ["streaming"]
default-features = false
[dependencies.harmos-storage]
version = "0.1.1"
default-features = false
[dependencies.heck]
version = "0.5"
optional = true
default-features = false
[dependencies.http-body]
version = "1"
optional = true
default-features = false
[dependencies.petgraph]
version = "0.8"
optional = true
default-features = true
[dependencies.postcard]
version = "1.1"
features = ["alloc"]
default-features = false
[dependencies.prost-reflect]
version = "0.16"
features = ["serde"]
optional = true
default-features = false
[dependencies.semver]
version = "1"
optional = true
default-features = true
[dependencies.serde]
version = "1"
features = ["derive"]
default-features = true
[dependencies.serde_json]
version = "1"
features = ["raw_value"]
default-features = true
[dependencies.sha2]
version = "0.11.0"
default-features = true
[dependencies.tempfile]
version = "3"
default-features = true
[dependencies.thiserror]
version = "2"
default-features = true
[dependencies.tokio]
version = "1"
features = [
"sync",
"rt",
"sync",
"time",
"macros",
]
default-features = true
[dependencies.tonic]
version = "0.14.6"
optional = true
default-features = true
[dependencies.tonic-reflection]
version = "0.14.6"
features = ["server"]
optional = true
default-features = false
[dependencies.tonic-web]
version = "0.14.6"
optional = true
default-features = false
[dependencies.tower]
version = "0.5"
features = ["util"]
optional = true
default-features = false
[dependencies.tower-http]
version = "0.7"
features = ["cors"]
optional = true
default-features = false
[dependencies.tracing]
version = "0.1"
default-features = true
[dev-dependencies.arrow-array]
version = "=59.3.0"
default-features = false
[dev-dependencies.arrow-buffer]
version = "=59.3.0"
default-features = false
[dev-dependencies.arrow-data]
version = "=59.3.0"
default-features = false
[dev-dependencies.arrow-ipc]
version = "=59.3.0"
default-features = false
[dev-dependencies.arrow-schema]
version = "=59.3.0"
default-features = false
[dev-dependencies.arrow-select]
version = "=59.3.0"
default-features = false
[dev-dependencies.base64]
version = "0.22.1"
features = ["alloc"]
default-features = false
[dev-dependencies.criterion]
version = "0.8.2"
default-features = false
[dev-dependencies.flatbuffers]
version = "=25.12.19"
default-features = false
[dev-dependencies.futures-util]
version = "0.3"
features = [
"std",
"async-await-macro",
]
default-features = false
[dev-dependencies.http-body-util]
version = "0.1"
default-features = false
[dev-dependencies.protoc-bin-vendored]
version = "3"
default-features = false
[dev-dependencies.syn]
version = "3"
features = [
"full",
"visit",
]
default-features = true
[dev-dependencies.tar]
version = "0.4.46"
default-features = false
[dev-dependencies.tempfile]
version = "3"
default-features = true
[dev-dependencies.tokio]
version = "1"
features = [
"sync",
"io-util",
"macros",
"process",
"rt",
"rt-multi-thread",
"test-util",
"time",
]
default-features = true
[dev-dependencies.tracing-subscriber]
version = "0.3"
features = [
"fmt",
"std",
]
default-features = false
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.harmos-sidecar]
version = "0.1.1"
optional = true
default-features = false
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.tokio]
version = "1"
features = [
"sync",
"rt-multi-thread",
]
default-features = true
[target.'cfg(not(target_arch = "wasm32"))'.dependencies.wasmtime]
version = "=49.0.2"
features = [
"async",
"component-model",
"component-model-async",
"cranelift",
"runtime",
"std",
]
optional = true
default-features = false
[target."cfg(windows)".dependencies.windows-sys]
version = "0.61"
features = [
"Win32_Foundation",
"Win32_System_Pipes",
"Win32_System_SystemInformation",
"Win32_Storage_FileSystem",
"Win32_System_WindowsProgramming",
]
default-features = false
[lints.clippy]
all = "warn"
[lints.rust]
unsafe_code = "warn"