[package] description = "WebAssembly component-native RPC framework based on WIT" name = "wrpc" version = "0.14.0" authors.workspace = true categories.workspace = true edition.workspace = true homepage.workspace = true license.workspace = true repository.workspace = true [workspace.package] authors = ["Roman Volosatovs "] categories = ["wasm"] edition = "2021" homepage = "https://github.com/bytecodealliance/wrpc" license = "Apache-2.0 WITH LLVM-exception" repository = "https://github.com/bytecodealliance/wrpc" [workspace] members = [ "benches/reactor", "crates/*", "examples/rust/*", "examples/web/rust", ] [features] default = ["bin", "nats", "net", "quic", "wasmtime", "web-transport"] bin = ["bin-bindgen", "bin-wasmtime"] bin-bindgen = [ "dep:clap", "dep:wit-bindgen-core", "dep:wit-bindgen-wrpc-go", "wit-bindgen-wrpc-go/clap", "wit-bindgen-wrpc-rust/clap", ] bin-wasmtime = ["dep:tokio", "dep:wrpc-wasmtime-cli", "tokio/rt-multi-thread"] nats = ["dep:async-nats", "dep:wrpc-transport-nats", "wrpc-cli/nats"] net = ["wrpc-transport/net"] quic = ["dep:wrpc-transport-quic"] wasmtime = ["dep:wrpc-runtime-wasmtime"] web-transport = ["dep:wrpc-transport-web"] [[bin]] name = "wit-bindgen-wrpc" required-features = ["bin-bindgen"] [[bin]] name = "wrpc-wasmtime" required-features = ["bin-wasmtime"] [[bench]] name = "bench" harness = false [profile.bench] debug = true [dependencies] anyhow = { workspace = true, features = ["std"] } async-nats = { workspace = true, optional = true } clap = { workspace = true, features = [ "color", "derive", "error-context", "help", "std", "suggestions", "usage", ], optional = true } tokio = { workspace = true, optional = true } tracing = { workspace = true, features = ["attributes"] } wit-bindgen-core = { workspace = true, optional = true } wit-bindgen-wrpc = { workspace = true } wit-bindgen-wrpc-go = { workspace = true, optional = true } wit-bindgen-wrpc-rust = { workspace = true, optional = true } wrpc-cli = { workspace = true, optional = true } wrpc-runtime-wasmtime = { workspace = true, optional = true } wrpc-transport = { workspace = true } wrpc-transport-nats = { workspace = true, features = [ "async-nats-0_37", ], optional = true } wrpc-transport-quic = { workspace = true, optional = true } wrpc-transport-web = { workspace = true, optional = true } wrpc-wasmtime-cli = { workspace = true, optional = true } [dev-dependencies] anyhow = { workspace = true } bytes = { workspace = true } criterion = { workspace = true, features = [ "async_tokio", "cargo_bench_support", "html_reports", "plotters", "rayon", ] } futures = { workspace = true } tempfile = { workspace = true } test-log = { workspace = true, features = ["color", "log", "trace"] } tokio = { workspace = true, features = ["process", "rt-multi-thread"] } wasmtime = { workspace = true } wasmtime-wasi = { workspace = true } wasmtime-cli-flags = { workspace = true, features = [ "async", "cache", "component-model", "coredump", "cranelift", "gc", "memory-protection-keys", "parallel-compilation", "pooling-allocator", "threads", ] } wrpc-test = { workspace = true, features = ["nats", "quic", "web-transport"] } wrpc-transport = { workspace = true, features = ["net"] } [workspace.dependencies] anyhow = { version = "1", default-features = false } async-nats = { version = "0.37", default-features = false } axum = { version = "0.7", default-features = false } bitflags = { version = "2", default-features = false } bytes = { version = "1", default-features = false } clap = { version = "4", default-features = false } criterion = { version = "0.5", default-features = false } futures = { version = "0.3", default-features = false } heck = { version = "0.5", default-features = false } humantime = { version = "2.1", default-features = false } nuid = { version = "0.5", default-features = false } pin-project-lite = { version = "0.2", default-features = false } prettyplease = { version = "0.2.25", default-features = false } proc-macro2 = { version = "1", default-features = false } quinn = { version = "0.11", default-features = false } quote = { version = "1", default-features = false } rcgen = { version = "0.13", default-features = false } redis = { version = "0.27", default-features = false } reqwest = { version = "0.11", default-features = false } rustls = { version = "0.23", default-features = false } send-future = { version = "0.1", default-features = false } serde = { version = "1", default-features = false } serde_json = { version = "1", default-features = false } syn = { version = "2", default-features = false, features = ["printing"] } tempfile = { version = "3", default-features = false } test-helpers = { default-features = false, path = "./crates/test-helpers" } test-log = { version = "0.2", default-features = false } tokio = { version = "1", default-features = false } tokio-stream = { version = "0.1", default-features = false } tokio-util = { version = "0.7", default-features = false } tower = { version = "0.5", default-features = false } tower-http = { version = "0.6", default-features = false } tracing = { version = "0.1", default-features = false } tracing-subscriber = { version = "0.3", default-features = false } url = { version = "2" } uuid = { version = "1", default-features = false } wasi = { version = "0.13", default-features = false } wasi-preview1-component-adapter-provider = { version = "25", default-features = false } wasm-tokio = { version = "0.6", default-features = false } wasmparser = { version = "0.219", default-features = false } wasmtime = { version = "26.0.1", default-features = false } wasmtime-cli-flags = { version = "26.0.1", default-features = false } wasmtime-wasi = { version = "26.0.1", default-features = false } wit-bindgen = { version = "0.34", default-features = false } wit-bindgen-core = { version = "0.34", default-features = false } wit-bindgen-wrpc = { version = "0.9", default-features = false, path = "./crates/wit-bindgen" } wit-bindgen-wrpc-go = { version = "0.11", default-features = false, path = "./crates/wit-bindgen-go" } wit-bindgen-wrpc-rust = { version = "0.9", default-features = false, path = "./crates/wit-bindgen-rust" } wit-bindgen-wrpc-rust-macro = { version = "0.9", default-features = false, path = "./crates/wit-bindgen-rust-macro" } wit-component = { version = "0.219", default-features = false } wit-parser = { version = "0.219", default-features = false } wrpc-cli = { version = "0.4", path = "./crates/cli", default-features = false } wrpc-introspect = { version = "0.6", default-features = false, path = "./crates/introspect" } wrpc-runtime-wasmtime = { version = "0.25", path = "./crates/runtime-wasmtime", default-features = false } wrpc-test = { path = "./crates/test", default-features = false } wrpc-transport = { version = "0.28.3", path = "./crates/transport", default-features = false } wrpc-transport-nats = { version = "0.27.1", path = "./crates/transport-nats", default-features = false } wrpc-transport-quic = { version = "0.4", path = "./crates/transport-quic", default-features = false } wrpc-transport-web = { version = "0.1", path = "./crates/transport-web", default-features = false } wrpc-wasi-keyvalue = { version = "0.1.1", path = "./crates/wasi-keyvalue", default-features = false } wrpc-wasi-keyvalue-mem = { version = "0.1", path = "./crates/wasi-keyvalue-mem", default-features = false } wrpc-wasi-keyvalue-redis = { version = "0.1", path = "./crates/wasi-keyvalue-redis", default-features = false } wrpc-wasmtime-cli = { version = "0.3", path = "./crates/wasmtime-cli", default-features = false } wtransport = { version = "0.4", default-features = false }