[package]
name = "ractor"
version = "0.15.13"
authors = ["Sean Lawlor", "Evan Au", "Dillon George"]
description = "A actor framework for Rust"
documentation = "https://docs.rs/ractor"
license = "MIT"
edition = "2021"
keywords = ["actor", "ractor"]
repository = "https://github.com/slawlor/ractor"
readme = "../README.md"
homepage = "https://github.com/slawlor/ractor"
categories = ["asynchronous"]
rust-version = "1.64"

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

[features]
### Other features
cluster = []
monitors = []
message_span_propogation = []
output-port-v2 = []
tokio_runtime = ["tokio/time", "tokio/rt", "tokio/macros", "tokio/tracing"]
blanket_serde = ["serde", "pot", "cluster"]
async-trait = ["dep:async-trait"]

default = ["tokio_runtime", "message_span_propogation"]

[dependencies]
## Required dependencies
bon = "2.2"
dashmap = "6"
futures = "0.3"
once_cell = "1"
strum = { version = "0.28", features = ["derive"] }

## Configurable dependencies
# Tracing feature requires --cfg=tokio_unstable
# async-std feature 'unstable' is required for spawn_local: https://docs.rs/async-std/latest/async_std/task/fn.spawn_local.html
async-std = { version = "1", features = ["attributes", "unstable"], optional = true }
async-trait = { version = "0.1", optional = true }
tokio = { version = "1", features = ["sync"] }
tracing = { version = "0.1", features = ["attributes"] }

## Blanket Serde
serde = { version = "1", optional = true }
pot = { version = "3.0", optional = true }


[target.'cfg(all(target_arch = "wasm32",target_os = "unknown"))'.dependencies]
js-sys = "0.3.77"
tokio_with_wasm = { version = "0.8.2", features = [
    "macros",
    "sync",
    "rt",
    "time",
] }
wasm-bindgen = "0.2.100"
wasm-bindgen-futures = "0.4.50"
web-time = "1.1.0"

[dev-dependencies]
backtrace = "0.3"

function_name = "0.3"
paste = "1"
serial_test = "3.0.0"
rand = "0.8"
tracing-glog = "0.4"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }

ractor_example_entry_proc = { path = "../ractor_example_entry_proc" }

[target.'cfg(not(all(target_arch = "wasm32", target_os = "unknown")))'.dev-dependencies]
tokio = { version = "1.30", features = [
    "rt",
    "time",
    "sync",
    "macros",
    "rt-multi-thread",
    "tracing",
] }
criterion = "0.8"
tracing-test = "0.2"

[target.'cfg(all(target_arch = "wasm32", target_os = "unknown"))'.dev-dependencies]
tokio = { version = "1.30", features = ["rt", "time", "sync", "macros"] }
wasm-bindgen-test = "0.3.50"
# 'getrandom' isn't used directly, but it's used by a dependency, and, for WASM, we need to enable the feature 'js'.
#   https://docs.rs/getrandom/latest/getrandom/#webassembly-support
#
getrandom = { version = "0.2", features = ["js"] }
criterion = { version = "0.8", default-features = false }

[[bench]]
name = "actor"
harness = false
required-features = []

[[bench]]
name = "async_traits"
harness = false
required-features = []

[[bench]]
name = "simple_advanced_benchmarks"
harness = false
required-features = []

[[bench]]
name = "factory"
harness = false
required-features = []
