[workspace] members = [ ".", "crates/engine", "crates/bindings/python", "crates/bindings/wasm-runtime", "crates/process", "crates/process-context", "crates/provisioning", "crates/distribution", "crates/iroh-driver", "crates/dashboard", "crates/myelin-control-contract", "apps/myelin", "xtask", "tools/vastai", "tools/actor-control-flow-lint", "tools/myelin-e2e-fuzz", "tools/benchmarks", ] default-members = [ ".", "crates/engine", "crates/process", "crates/process-context", "crates/provisioning", "crates/transport", "crates/distribution", "crates/dashboard", "apps/myelin", "tools/vastai", ] # The language bindings (python, wasm) and xtask are built on demand # (-p / --workspace / cargo-xtask), not during normal native iteration. exclude = ["crates/bindings/wasm-crypto", "examples"] [workspace.dependencies] # Centralized so every member resolves tokio with the SAME feature set. # Without this, members declared tokio with different features, so building # one member vs another (or `run` vs `test`) recompiled tokio each time. tokio = { version = "1", features = ["rt", "rt-multi-thread", "macros", "process", "io-util", "sync", "time", "net", "signal"] } iroh = { version = "1.1", default-features = false, features = ["portmapper", "tls-ring"] } iroh-base = { version = "1.1", default-features = false, features = ["key"] } iroh-relay = { version = "1.1", default-features = false, features = ["test-utils"] } reqwest = { version = "0.13", default-features = false, features = ["json", "rustls-no-provider"] } rustls = { version = "0.23", default-features = false, features = ["ring", "std"] } [package] name = "swactor" version = "0.1.0" edition = "2024" license = "AGPL-3.0-only" autobenches = false [profile.bench] debug = true strip = false # Development builds omit debug information; the diagnostic profile restores # full debugger support without changing release artifacts. [profile.dev] debug = 0 [profile.dev.package.iroh] hint-mostly-unused = true [profile.dev.package."noq-proto"] hint-mostly-unused = true [profile.dev.package.reqwest] hint-mostly-unused = true [profile.dev.package.rustls] hint-mostly-unused = true [profile.dev.package.tokio] hint-mostly-unused = true [profile.test] debug = 0 [profile.test.package.iroh] hint-mostly-unused = true [profile.test.package."noq-proto"] hint-mostly-unused = true [profile.test.package.reqwest] hint-mostly-unused = true [profile.test.package.rustls] hint-mostly-unused = true [profile.test.package.tokio] hint-mostly-unused = true [profile.diagnostic] inherits = "dev" debug = 2 [lib] crate-type = ["rlib"] [features] default = ["getrandom", "std"] std = [] # OTP patterns: supervisors, registries, timers, routers getrandom = ["dep:getrandom"] serde = ["dep:serde"] tracing = ["dep:tracing"] no_random = [] # compile without access to a source of randomness transport = [ ] # transport-agnostic messaging (no mandatory deps; codec is user-provided) wasm = ["no_random", "dep:web-time"] # browser/wasm32 target support [dependencies] getrandom = { version = "0.2", optional = true } serde = { version = "1", features = ["derive"], optional = true } tracing = { version = "0.1", optional = true } web-time = { version = "0.2", optional = true } crossbeam-queue = "0.3.12" atomic-waker = "1.1" crossbeam-utils = "0.8.21" parking_lot = "0.12" [dev-dependencies] proptest = "1" proptest-state-machine = "0.3" loom = "0.7" proc-macro2 = "1" syn = { version = "2", features = ["full", "visit"] } [workspace.lints.rust] warnings = "deny" [workspace.lints.clippy] allow_attributes = "forbid" [lints] workspace = true