actor-kit 0.2.4

Work-stealing actor runtime with OTP-style supervision trees, crossbeam work-stealing scheduling, and bounded mailbox backpressure
Documentation
[package]
name = "actor-kit"
version = "0.2.4"
edition = "2021"
rust-version = "1.85"
description = "Work-stealing actor runtime with OTP-style supervision trees, crossbeam work-stealing scheduling, and bounded mailbox backpressure"
license = "MIT OR Apache-2.0"
repository = "https://github.com/WyattAu/actor-kit"
homepage = "https://github.com/WyattAu/actor-kit"
documentation = "https://docs.rs/actor-kit"
readme = "README.md"
keywords = ["actor", "supervision", "work-stealing", "erlang", "concurrency"]
categories = ["concurrency", "asynchronous"]
exclude = ["/target"]

[dependencies]
tokio = { version = "1", features = ["rt", "sync", "time", "macros"] }
crossbeam-deque = "0.8"
crossbeam-queue = "0.3"
parking_lot = "0.12"
dashmap = "6.1"
thiserror = "2"
tracing = "0.1"
uuid = { version = "1", features = ["v4", "serde"] }
futures = "0.3"
serde = { version = "1", features = ["derive"], optional = true }
async-trait = { version = "0.1", optional = true }
bincode = { version = "1.3", optional = true }
rkyv = { version = "0.8", features = ["bytecheck"], optional = true }
# Deterministic simulation testing (`sim` module): seeded xoshiro RNG driving
# task selection and fault injection. No other random/time source is allowed
# on the sim path.
rand_xoshiro = { version = "0.8", optional = true }

# Model-checking tests (see src/loom_mailbox.rs). Activated only with
# RUSTFLAGS="--cfg loom"; the lib swaps mailbox atomics for loom's
# equivalents. The `loom` feature is a marker switch for callers (CI and
# local runs pass `--features loom`); the dependency itself is pulled in
# by the cfg, so plain builds never compile loom.
[target.'cfg(loom)'.dependencies]
loom = { version = "0.7", features = ["futures"] }

[dev-dependencies]
proptest = "1"
criterion = "0.8"
serde_json = "1"
tokio = { version = "1", features = ["rt", "rt-multi-thread", "sync", "time", "macros"] }
# Deterministic CI perf gate (instruction counts; needs valgrind to run).
iai-callgrind = "0.16"

[features]
default = ["std"]
# std passthrough: the runtime is std-based; kept so dependents can express
# `default-features = false, features = ["std"]` uniformly.
std = []
# Typed RPC (`rpc` module), serde impls on public types, wire serialization.
serde = ["dep:serde", "dep:async-trait", "dep:bincode"]
# Zero-copy message path via rkyv (`zero_copy` module).
zero-copy = ["dep:rkyv"]
# Bump-allocator memory pool (`memory_pool` module).
#
# LOUD WARNING: this module contains `unsafe` code (raw-pointer arena,
# hand-rolled free list, manual `Send`/`Sync` impls). The crate otherwise
# carries `#![deny(unsafe_code)]`; this feature opts into the one exception.
# Every block carries SAFETY comments. Review before enabling.
unsafe-pool = []
# Deterministic simulation testing (`sim` module): seeded scheduler, virtual
# clock, fault injection, seed-replay traces.
sim = ["dep:rand_xoshiro"]
# Everything above.
full = ["serde", "zero-copy", "unsafe-pool", "sim"]
# Loom model-checking marker (see src/loom_mailbox.rs). Does not pull the
# dependency by itself — activation is `RUSTFLAGS="--cfg loom"`; pass this
# feature alongside the flag as the canonical invocation:
#   RUSTFLAGS="--cfg loom" cargo test --release --features loom loom -- --test-threads=1
loom = []

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

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

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

# Deterministic CI perf gate (instruction counts under valgrind). Not run
# locally unless valgrind is installed; see benches/iai_hot_path.rs.
[[bench]]
name = "iai_hot_path"
harness = false

[profile.bench]
debug = true

[lints.clippy]
unwrap_used = "warn"
expect_used = "warn"

[lints.rust]
unexpected_cfgs = { level = "warn", check-cfg = ['cfg(loom)'] }

[package.metadata.layers]
tier = "L2"