rapace 0.5.0

High-performance RPC framework with shared memory transport
Documentation
[package]
name = "rapace"
version.workspace = true
edition.workspace = true
license.workspace = true
repository.workspace = true
description = "High-performance RPC framework with shared memory transport"
readme = "README.md"

[package.metadata.docs.rs]
rustdoc-args = ["--html-in-header", "arborium-header.html"]

[package.metadata."docs.rs"]
rustdoc-args = ["--html-in-header", "arborium-header.html"]

[dependencies]
tracing = { workspace = true }
# Core types and traits
rapace-core = { workspace = true }

# Proc macros (re-exported as #[rapace::service])
rapace-macros = { workspace = true }

# Registry for service/method metadata
rapace-registry = { workspace = true }

# Serialization
facet = { workspace = true }
facet-core = { workspace = true }
facet-postcard = { workspace = true }
futures = { workspace = true }

parking_lot.workspace = true

# Cross-platform time (works on WASM)
web-time.workspace = true

# Native-only dependencies (not WASM-compatible)
[target.'cfg(not(target_arch = "wasm32"))'.dependencies]
tokio = { workspace = true, features = ["net", "io-util"], optional = true }

[dev-dependencies]
tokio = { workspace = true, features = ["rt-multi-thread", "macros"] }
tokio-stream = { workspace = true }

[features]
default = ["mem", "stream", "shm"]

# Transport features
mem = ["rapace-core/mem"]
stream = ["rapace-core/stream", "dep:tokio"]
# websocket: universal feature that works on both native (tungstenite) and WASM (web-sys)
websocket = ["rapace-core/websocket"]
# Explicit backend selection (optional, for fine-grained control)
websocket-tungstenite = ["websocket"]
websocket-axum = ["rapace-core/websocket-axum"]
websocket-wasm = ["websocket"]
shm = ["rapace-core/shm"]

# All transports
full = ["mem", "stream", "websocket", "shm"]