[package] name = "wasmtime-cli" version.workspace = true authors.workspace = true description = "Command-line interface for Wasmtime" license = "Apache-2.0 WITH LLVM-exception" documentation = "https://bytecodealliance.github.io/wasmtime/cli.html" categories = ["wasm"] keywords = ["webassembly", "wasm"] repository = "https://github.com/bytecodealliance/wasmtime" readme = "README.md" edition.workspace = true default-run = "wasmtime" rust-version.workspace = true [lib] doctest = false [[bin]] name = "wasmtime" path = "src/bin/wasmtime.rs" doc = false [dependencies] wasmtime = { workspace = true, features = ['cache', 'cranelift'] } wasmtime-cache = { workspace = true } wasmtime-cli-flags = { workspace = true } wasmtime-cranelift = { workspace = true } wasmtime-environ = { workspace = true } wasmtime-explorer = { workspace = true } wasmtime-wast = { workspace = true } wasmtime-wasi = { workspace = true, default-features = true, features = [ "exit", ] } wasmtime-wasi-nn = { workspace = true, optional = true } wasmtime-wasi-threads = { workspace = true, optional = true } wasmtime-wasi-http = { workspace = true, optional = true } wasmtime-runtime = { workspace = true } clap = { workspace = true, features = ["color", "suggestions", "derive"] } anyhow = { workspace = true } target-lexicon = { workspace = true } once_cell = { workspace = true } listenfd = "1.0.0" wat = { workspace = true } serde = { workspace = true } serde_derive = { workspace = true } serde_json = { workspace = true } wasmparser = { workspace = true } wasm-encoder = { workspace = true } async-trait = { workspace = true } tokio = { workspace = true, optional = true, features = [ "signal", "macros" ] } hyper = { workspace = true, optional = true } http-body = { workspace = true } http-body-util = { workspace = true } [target.'cfg(unix)'.dependencies] rustix = { workspace = true, features = ["mm", "param"] } [dev-dependencies] # depend again on wasmtime to activate its default features for tests wasmtime = { workspace = true, features = ['component-model', 'async', 'default', 'winch'] } env_logger = { workspace = true } log = { workspace = true } filecheck = { workspace = true } tempfile = { workspace = true } wasmtime-runtime = { workspace = true } tokio = { workspace = true, features = ["rt", "time", "macros", "rt-multi-thread"] } wast = { workspace = true } criterion = "0.5.0" num_cpus = "1.13.0" memchr = "2.4" async-trait = { workspace = true } wat = { workspace = true } rayon = "1.5.0" wasmtime-wast = { workspace = true, features = ['component-model'] } wasmtime-component-util = { workspace = true } component-macro-test = { path = "crates/misc/component-macro-test" } component-test-util = { workspace = true } bstr = "1.6.0" libc = { workspace = true } serde = { workspace = true } serde_json = { workspace = true } walkdir = { workspace = true } test-programs-artifacts = { workspace = true } [target.'cfg(windows)'.dev-dependencies] windows-sys = { workspace = true, features = ["Win32_System_Memory"] } [build-dependencies] anyhow = { workspace = true } [profile.release.build-override] opt-level = 0 [workspace] resolver = '2' members = [ "cranelift", "cranelift/isle/fuzz", "cranelift/isle/islec", "cranelift/serde", "crates/bench-api", "crates/c-api", "crates/environ/fuzz", "crates/test-programs", "crates/wasi-preview1-component-adapter", "crates/wasi-preview1-component-adapter/verify", "crates/winch", "examples/fib-debug/wasm", "examples/wasi/wasm", "examples/tokio/wasm", "fuzz", "winch", "winch/codegen", ] exclude = [ 'crates/wasi-common/WASI/tools/witx-cli', 'docs/rust_wasi_markdown_parser', ] [workspace.package] version = "15.0.0" authors = ["The Wasmtime Project Developers"] edition = "2021" # Wasmtime's current policy is that this number can be no larger than the # current stable release of Rust minus 2. rust-version = "1.71.0" [workspace.dependencies] arbitrary = { version = "1.3.1" } wasmtime-wmemcheck = { path = "crates/wmemcheck", version = "=15.0.0" } wasmtime = { path = "crates/wasmtime", version = "15.0.0", default-features = false } wasmtime-cache = { path = "crates/cache", version = "=15.0.0" } wasmtime-cli-flags = { path = "crates/cli-flags", version = "=15.0.0" } wasmtime-cranelift = { path = "crates/cranelift", version = "=15.0.0" } wasmtime-cranelift-shared = { path = "crates/cranelift-shared", version = "=15.0.0" } wasmtime-winch = { path = "crates/winch", version = "=15.0.0" } wasmtime-environ = { path = "crates/environ", version = "=15.0.0" } wasmtime-explorer = { path = "crates/explorer", version = "=15.0.0" } wasmtime-fiber = { path = "crates/fiber", version = "=15.0.0" } wasmtime-types = { path = "crates/types", version = "15.0.0" } wasmtime-jit = { path = "crates/jit", version = "=15.0.0" } wasmtime-jit-debug = { path = "crates/jit-debug", version = "=15.0.0" } wasmtime-runtime = { path = "crates/runtime", version = "=15.0.0" } wasmtime-wast = { path = "crates/wast", version = "=15.0.0" } wasmtime-wasi = { path = "crates/wasi", version = "15.0.0", default-features = false } wasmtime-wasi-http = { path = "crates/wasi-http", version = "=15.0.0", default-features = false } wasmtime-wasi-nn = { path = "crates/wasi-nn", version = "15.0.0" } wasmtime-wasi-threads = { path = "crates/wasi-threads", version = "15.0.0" } wasmtime-component-util = { path = "crates/component-util", version = "=15.0.0" } wasmtime-component-macro = { path = "crates/component-macro", version = "=15.0.0" } wasmtime-asm-macros = { path = "crates/asm-macros", version = "=15.0.0" } wasmtime-versioned-export-macros = { path = "crates/versioned-export-macros", version = "=15.0.0" } component-test-util = { path = "crates/misc/component-test-util" } component-fuzz-util = { path = "crates/misc/component-fuzz-util" } wiggle = { path = "crates/wiggle", version = "=15.0.0", default-features = false } wiggle-macro = { path = "crates/wiggle/macro", version = "=15.0.0" } wiggle-generate = { path = "crates/wiggle/generate", version = "=15.0.0" } wasi-common = { path = "crates/wasi-common", version = "=15.0.0" } wasi-tokio = { path = "crates/wasi-common/tokio", version = "=15.0.0" } wasi-cap-std-sync = { path = "crates/wasi-common/cap-std-sync", version = "=15.0.0" } wasmtime-fuzzing = { path = "crates/fuzzing" } wasmtime-jit-icache-coherence = { path = "crates/jit-icache-coherence", version = "=15.0.0" } wasmtime-wit-bindgen = { path = "crates/wit-bindgen", version = "=15.0.0" } test-programs-artifacts = { path = 'crates/test-programs/artifacts' } cranelift-wasm = { path = "cranelift/wasm", version = "0.102.0" } cranelift-codegen = { path = "cranelift/codegen", version = "0.102.0" } cranelift-frontend = { path = "cranelift/frontend", version = "0.102.0" } cranelift-entity = { path = "cranelift/entity", version = "0.102.0" } cranelift-native = { path = "cranelift/native", version = "0.102.0" } cranelift-module = { path = "cranelift/module", version = "0.102.0" } cranelift-interpreter = { path = "cranelift/interpreter", version = "0.102.0" } cranelift-reader = { path = "cranelift/reader", version = "0.102.0" } cranelift-filetests = { path = "cranelift/filetests" } cranelift-object = { path = "cranelift/object", version = "0.102.0" } cranelift-jit = { path = "cranelift/jit", version = "0.102.0" } cranelift-fuzzgen = { path = "cranelift/fuzzgen" } cranelift-bforest = { path = "cranelift/bforest", version = "0.102.0" } cranelift-control = { path = "cranelift/control", version = "0.102.0" } cranelift = { path = "cranelift/umbrella", version = "0.102.0" } winch-codegen = { path = "winch/codegen", version = "=0.13.0" } winch-filetests = { path = "winch/filetests" } winch-test-macros = { path = "winch/test-macros" } wasi-preview1-component-adapter = { path = "crates/wasi-preview1-component-adapter" } byte-array-literals = { path = "crates/wasi-preview1-component-adapter/byte-array-literals" } # Bytecode Alliance maintained dependencies: # --------------------------- regalloc2 = "0.9.3" # cap-std family: target-lexicon = { version = "0.12.3", default-features = false, features = ["std"] } cap-std = "2.0.0" cap-rand = { version = "2.0.0", features = ["small_rng"] } cap-fs-ext = "2.0.0" cap-net-ext = "2.0.0" cap-time-ext = "2.0.0" cap-tempfile = "2.0.0" fs-set-times = "0.20.0" system-interface = { version = "0.26.0", features = ["cap_std_impls"] } io-lifetimes = { version = "2.0.2", default-features = false } io-extras = "0.18.0" rustix = "0.38.8" is-terminal = "0.4.0" # wit-bindgen: wit-bindgen = { version = "0.12.0", default-features = false } # wasm-tools family: wasmparser = "0.115.0" wat = "1.0.77" wast = "66.0.2" wasmprinter = "0.2.70" wasm-encoder = "0.35.0" wasm-smith = "0.12.21" wasm-mutate = "0.2.38" wit-parser = "0.12.0" wit-component = "0.15.0" # Non-Bytecode Alliance maintained dependencies: # -------------------------- object = { version = "0.32", default-features = false, features = ['read_core', 'elf', 'std'] } gimli = { version = "0.28.0", default-features = false, features = ['read', 'std'] } anyhow = "1.0.22" windows-sys = "0.48.0" env_logger = "0.10" log = { version = "0.4.8", default-features = false } clap = { version = "4.3.12", features = ["color", "suggestions", "derive"] } hashbrown = { version = "0.14", default-features = false } capstone = "0.9.0" once_cell = "1.12.0" smallvec = { version = "1.6.1", features = ["union"] } tracing = "0.1.26" bitflags = "2.0" thiserror = "1.0.43" async-trait = "0.1.71" heck = "0.4" similar = "2.1.0" toml = "0.5.9" # serde and serde_derive must have the same version serde = "1.0.188" serde_derive = "1.0.188" serde_json = "1.0.80" glob = "0.3.0" libfuzzer-sys = "0.4.0" walkdir = "2.3.3" cfg-if = "1.0" tempfile = "3.1.0" filecheck = "0.5.0" libc = "0.2.60" file-per-thread-logger = "0.2.0" tokio = { version = "1.26.0", features = [ "rt", "time" ] } hyper = "=1.0.0-rc.3" http = "0.2.9" http-body = "=1.0.0-rc.2" http-body-util = "=0.1.0-rc.2" bytes = "1.4" futures = { version = "0.3.27", default-features = false } indexmap = "2.0.0" pretty_env_logger = "0.5.0" syn = "2.0.25" test-log = { version = "0.2", default-features = false, features = ["trace"] } tracing-subscriber = { version = "0.3.1", default-features = false, features = ['fmt', 'env-filter', 'ansi', 'tracing-log'] } url = "2.3.1" [features] default = [ "jitdump", "wasmtime/wat", "wasmtime/parallel-compilation", "vtune", "wasi-nn", "wasi-threads", "wasi-http", "pooling-allocator", ] jitdump = ["wasmtime/jitdump"] vtune = ["wasmtime/vtune"] wasi-nn = ["dep:wasmtime-wasi-nn"] wasi-threads = ["dep:wasmtime-wasi-threads"] wasi-http = ["component-model", "dep:wasmtime-wasi-http", "dep:tokio", "dep:hyper", "wasmtime-wasi-http?/sync"] pooling-allocator = ["wasmtime/pooling-allocator", "wasmtime-cli-flags/pooling-allocator"] all-arch = ["wasmtime/all-arch"] component-model = [ "wasmtime/component-model", "wasmtime-wast/component-model", "wasmtime-cli-flags/component-model" ] winch = ["wasmtime/winch"] wmemcheck = ["wasmtime/wmemcheck"] # Enable the `wasmtime serve` command serve = ["wasi-http", "component-model"] [[test]] name = "host_segfault" harness = false [[example]] name = "tokio" required-features = ["wasmtime-wasi/tokio"] [[bench]] name = "instantiation" harness = false [[bench]] name = "thread_eager_init" harness = false [[bench]] name = "trap" harness = false [[bench]] name = "call" harness = false [[bench]] name = "wasi" harness = false [profile.release.package.wasi-preview1-component-adapter] opt-level = 's' strip = 'debuginfo' [profile.dev.package.wasi-preview1-component-adapter] # Make dev look like a release build since this adapter module won't work with # a debug build that uses data segments and such. incremental = false opt-level = 's' # Omit assertions, which include failure messages which require string # initializers. debug-assertions = false # Omit integer overflow checks, which include failure messages which require # string initializers. overflow-checks = false # Same as `wasi-preview1-component-adapter` above [profile.dev.package.wit-bindgen] incremental = false debug-assertions = false overflow-checks = false opt-level = 's'