harmos-runtime 0.1.5

Harmos runtime: managed state, undo, recovery, background work and typed streams.
Documentation
# === Package === #

[package]
name = "harmos-runtime"
description = "Harmos runtime: managed state, undo, recovery, background work and typed streams."
edition.workspace = true
rust-version.workspace = true
license.workspace = true
publish.workspace = true
autotests = false

version = { workspace = true }

# === Package Targets === #

[[bin]]
name = "harmos-stream-consumer-fixture"
path = "tests/fixtures/stream_consumer.rs"
required-features = ["plugin-sidecar"]
test = false
bench = false

# === Features === #

# Core Runtime And Authoring Are Always Available
[features]
default = []
plugin = ["dep:petgraph", "dep:semver", "semver/serde", "dep:harmos-packaging"]
plugin-sidecar = ["plugin", "dep:harmos-sidecar", "harmos-sidecar/kit", "harmos-sidecar/derive", "tokio/io-util", "tokio/process"]
plugin-guest = ["plugin", "dep:harmos-guest", "harmos-guest/kit", "harmos-guest/derive", "dep:wasmtime"]
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",
]
# Protobuf Descriptor Projection For The Runtime Transport.
generate-proto = ["dep:harmos-packaging", "harmos-packaging/generate-proto"]
# Hands Out The Signal Kernels; Core Reductions Use Them Regardless.
signal = []
signal-fft = ["signal", "harmos-storage/fft"]
simulation = ["tokio/test-util"]

# === Dependencies === #

[dependencies]
# Local
harmos-domain = { workspace = true, features = ["derive"] }
harmos-guest = { workspace = true, optional = true }
harmos-macros = { workspace = true, default-features = true }
harmos-packaging = { workspace = true, optional = true }
harmos-sdk = { workspace = true, features = ["streaming"] }
harmos-storage = { workspace = true }

# Git

# Error Handling
thiserror = { workspace = true, default-features = true }

# Logging
tracing = { workspace = true, default-features = true }

# Utilities
bytes = { workspace = true, optional = true }
# Retry Windows Use Native Entropy Or Web Crypto On Browser WebAssembly.
getrandom = { workspace = true, features = ["std", "wasm_js"] }
heck = { workspace = true, optional = true }
petgraph = { workspace = true, default-features = true, optional = true }
semver = { workspace = true, default-features = true, optional = true }
sha2 = { workspace = true, default-features = true }

# Serialization
prost-reflect = { workspace = true, optional = true, features = ["serde"] }
serde = { workspace = true, default-features = true }
serde_json = { workspace = true, default-features = true, features = ["raw_value"] }

# Configuration

# Filesystem
tempfile = { workspace = true, default-features = true }

# Parsing

# Concurrency

# Async
futures-core = { workspace = true, default-features = true }
futures-util = { workspace = true }
tokio = { workspace = true, default-features = true, features = ["rt", "sync", "time", "macros"] }

# Networking
http-body = { workspace = true, optional = true }
tonic = { workspace = true, default-features = true, optional = true }
tonic-reflection = { workspace = true, features = ["server"], optional = true }
tonic-web = { workspace = true, optional = true }
tower = { workspace = true, optional = true }
tower-http = { workspace = true, optional = true }

# Storage

# UI

# Testing

# === Build Dependencies === #

# === Dev Dependencies === #

[dev-dependencies]
# Local
harmos-packaging = { path = "../harmos-packaging", default-features = false, features = ["generate-proto"] }
harmos-sdk = { path = "../harmos-sdk", default-features = false, features = ["grpc"] }
schematic-domain = { path = "../../examples/schematic/domain" }

# Git

# Error Handling

# Logging
tracing-subscriber = { workspace = true }

# Utilities

# Serialization
arrow-array = { workspace = true }
arrow-buffer = { workspace = true }
arrow-data = { workspace = true }
arrow-ipc = { workspace = true }
arrow-schema = { workspace = true }
arrow-select = { workspace = true }
base64 = { workspace = true }
flatbuffers = { workspace = true }
protoc-bin-vendored = { workspace = true }

# Configuration

# Filesystem
tar = { workspace = true }
tempfile = { workspace = true, default-features = true }

# Parsing
syn = { workspace = true, default-features = true, features = ["visit"] }

# Concurrency

# Async
futures-util = { workspace = true, features = ["async-await-macro"] }
tokio = { workspace = true, default-features = true, features = [
  "io-util",
  "macros",
  "process",
  "rt",
  "rt-multi-thread",
  "test-util",
  "time",
] }

# Networking
http-body-util = { workspace = true }

# Storage

# UI

# Testing
criterion = { workspace = true, default-features = false }

# === Target Dependencies === #

[target.'cfg(windows)'.dependencies]
# Local

# Git

# Error Handling

# Logging

# Utilities
windows-sys = { workspace = true, features = ["Win32_Storage_FileSystem", "Win32_System_WindowsProgramming"] }

# Serialization

# Configuration

# Filesystem

# Parsing

# Concurrency

# Async

# Networking

# Storage

# UI

# Testing

[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
# Local
harmos-sidecar = { workspace = true, optional = true }

# Git

# Error Handling

# Logging

# Utilities
wasmtime = { workspace = true, optional = true }

# Serialization

# Configuration

# Filesystem

# Parsing

# Concurrency

# Async
# The executable throughput fixture owns four native runtime workers.
tokio = { workspace = true, default-features = true, features = ["rt-multi-thread"] }

# Networking

# Storage

# UI

# Testing

# === Test Targets === #

[[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 Targets === #

# Both carriers, because the fixture is a sidecar program that co-links a guest
# declaration into its own artifact — the one shape that proves a single binary
# can carry two declarations. Declaring only `sidecar` left it built against a
# `harmos::guest` that the selected features had not opened.
[[bench]]
name = "integration-runtime"
path = "benches/runtime/main.rs"
harness = false

[[bench]]
name = "integration-operations"
path = "benches/operations/main.rs"
harness = false

[[bench]]
name = "integration-storage"
path = "benches/storage/main.rs"
harness = false

[[bench]]
name = "integration-streams"
path = "benches/streams/main.rs"
harness = false

[[bench]]
name = "integration-sidecar"
path = "benches/sidecar/main.rs"
harness = false
required-features = ["plugin-sidecar"]

[[bench]]
name = "system-sidecar"
path = "benches/sidecar/system.rs"
harness = false
required-features = ["plugin-sidecar"]

[[bench]]
name = "integration-simulation"
path = "benches/simulation/main.rs"
harness = false
required-features = ["simulation"]

# === Example Targets === #

# === Workspace Lints === #

# === Lints === #

[lints]
workspace = true

# === Profiles === #

# === Patches === #

# === Other === #