You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
436 lines
15 KiB
436 lines
15 KiB
[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
|
|
|
|
[lints]
|
|
workspace = true
|
|
|
|
[lib]
|
|
doctest = false
|
|
|
|
[[bin]]
|
|
name = "wasmtime"
|
|
path = "src/bin/wasmtime.rs"
|
|
doc = false
|
|
|
|
[dependencies]
|
|
wasmtime = { workspace = true }
|
|
wasmtime-cache = { workspace = true, optional = true }
|
|
wasmtime-cli-flags = { workspace = true }
|
|
wasmtime-cranelift = { workspace = true, optional = true }
|
|
wasmtime-environ = { workspace = true }
|
|
wasmtime-explorer = { workspace = true, optional = true }
|
|
wasmtime-wast = { workspace = true, optional = 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 }
|
|
anyhow = { workspace = true }
|
|
target-lexicon = { workspace = true }
|
|
once_cell = { workspace = true }
|
|
listenfd = "1.0.0"
|
|
wat = { workspace = true, optional = true }
|
|
serde = { workspace = true }
|
|
serde_derive = { workspace = true }
|
|
serde_json = { workspace = true }
|
|
wasmparser = { workspace = true }
|
|
tracing = { workspace = true }
|
|
log = { workspace = true }
|
|
humantime = { workspace = true }
|
|
|
|
async-trait = { workspace = true }
|
|
bytes = { workspace = true }
|
|
tokio = { workspace = true, optional = true, features = [ "signal", "macros" ] }
|
|
hyper = { workspace = true, optional = true }
|
|
http = { workspace = true, optional = true }
|
|
http-body-util = { workspace = true, optional = 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', 'debug-builtins'] }
|
|
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 }
|
|
bytesize = "1.3.0"
|
|
|
|
[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/artifact",
|
|
"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',
|
|
'crates/wasi-common/WASI/tools/witx',
|
|
'docs/rust_wasi_markdown_parser',
|
|
]
|
|
|
|
[workspace.package]
|
|
version = "17.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.72.0"
|
|
|
|
[workspace.lints.rust]
|
|
# Turn on some lints which are otherwise allow-by-default in rustc.
|
|
unused_extern_crates = 'warn'
|
|
trivial_numeric_casts = 'warn'
|
|
unstable_features = 'warn'
|
|
unused_import_braces = 'warn'
|
|
|
|
[workspace.lints.clippy]
|
|
# The default set of lints in Clippy is viewed as "too noisy" right now so
|
|
# they're all turned off by default. Selective lints are then enabled below as
|
|
# necessary.
|
|
all = 'allow'
|
|
|
|
[workspace.dependencies]
|
|
arbitrary = { version = "1.3.1" }
|
|
wasmtime-wmemcheck = { path = "crates/wmemcheck", version = "=17.0.0" }
|
|
wasmtime = { path = "crates/wasmtime", version = "17.0.0", default-features = false }
|
|
wasmtime-cache = { path = "crates/cache", version = "=17.0.0" }
|
|
wasmtime-cli-flags = { path = "crates/cli-flags", version = "=17.0.0" }
|
|
wasmtime-cranelift = { path = "crates/cranelift", version = "=17.0.0" }
|
|
wasmtime-cranelift-shared = { path = "crates/cranelift-shared", version = "=17.0.0" }
|
|
wasmtime-winch = { path = "crates/winch", version = "=17.0.0" }
|
|
wasmtime-environ = { path = "crates/environ", version = "=17.0.0" }
|
|
wasmtime-explorer = { path = "crates/explorer", version = "=17.0.0" }
|
|
wasmtime-fiber = { path = "crates/fiber", version = "=17.0.0" }
|
|
wasmtime-types = { path = "crates/types", version = "17.0.0" }
|
|
wasmtime-jit = { path = "crates/jit", version = "=17.0.0" }
|
|
wasmtime-jit-debug = { path = "crates/jit-debug", version = "=17.0.0" }
|
|
wasmtime-runtime = { path = "crates/runtime", version = "=17.0.0" }
|
|
wasmtime-wast = { path = "crates/wast", version = "=17.0.0" }
|
|
wasmtime-wasi = { path = "crates/wasi", version = "17.0.0", default-features = false }
|
|
wasmtime-wasi-http = { path = "crates/wasi-http", version = "=17.0.0", default-features = false }
|
|
wasmtime-wasi-nn = { path = "crates/wasi-nn", version = "17.0.0" }
|
|
wasmtime-wasi-threads = { path = "crates/wasi-threads", version = "17.0.0" }
|
|
wasmtime-component-util = { path = "crates/component-util", version = "=17.0.0" }
|
|
wasmtime-component-macro = { path = "crates/component-macro", version = "=17.0.0" }
|
|
wasmtime-asm-macros = { path = "crates/asm-macros", version = "=17.0.0" }
|
|
wasmtime-versioned-export-macros = { path = "crates/versioned-export-macros", version = "=17.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 = "=17.0.0", default-features = false }
|
|
wiggle-macro = { path = "crates/wiggle/macro", version = "=17.0.0" }
|
|
wiggle-generate = { path = "crates/wiggle/generate", version = "=17.0.0" }
|
|
wasi-common = { path = "crates/wasi-common", version = "=17.0.0" }
|
|
wasi-tokio = { path = "crates/wasi-common/tokio", version = "=17.0.0" }
|
|
wasi-cap-std-sync = { path = "crates/wasi-common/cap-std-sync", version = "=17.0.0" }
|
|
wasmtime-fuzzing = { path = "crates/fuzzing" }
|
|
wasmtime-jit-icache-coherence = { path = "crates/jit-icache-coherence", version = "=17.0.0" }
|
|
wasmtime-wit-bindgen = { path = "crates/wit-bindgen", version = "=17.0.0" }
|
|
test-programs-artifacts = { path = 'crates/test-programs/artifacts' }
|
|
|
|
cranelift-wasm = { path = "cranelift/wasm", version = "0.104.0" }
|
|
cranelift-codegen = { path = "cranelift/codegen", version = "0.104.0", default-features = false, features = ["std", "unwind"] }
|
|
cranelift-frontend = { path = "cranelift/frontend", version = "0.104.0" }
|
|
cranelift-entity = { path = "cranelift/entity", version = "0.104.0" }
|
|
cranelift-native = { path = "cranelift/native", version = "0.104.0" }
|
|
cranelift-module = { path = "cranelift/module", version = "0.104.0" }
|
|
cranelift-interpreter = { path = "cranelift/interpreter", version = "0.104.0" }
|
|
cranelift-reader = { path = "cranelift/reader", version = "0.104.0" }
|
|
cranelift-filetests = { path = "cranelift/filetests" }
|
|
cranelift-object = { path = "cranelift/object", version = "0.104.0" }
|
|
cranelift-jit = { path = "cranelift/jit", version = "0.104.0" }
|
|
cranelift-fuzzgen = { path = "cranelift/fuzzgen" }
|
|
cranelift-bforest = { path = "cranelift/bforest", version = "0.104.0" }
|
|
cranelift-control = { path = "cranelift/control", version = "0.104.0" }
|
|
cranelift = { path = "cranelift/umbrella", version = "0.104.0" }
|
|
|
|
winch-codegen = { path = "winch/codegen", version = "=0.15.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.12", 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.21"
|
|
is-terminal = "0.4.0"
|
|
# wit-bindgen:
|
|
wit-bindgen = { version = "0.15.0", default-features = false }
|
|
|
|
# wasm-tools family:
|
|
wasmparser = "0.118.1"
|
|
wat = "1.0.82"
|
|
wast = "69.0.1"
|
|
wasmprinter = "0.2.75"
|
|
wasm-encoder = "0.38.1"
|
|
wasm-smith = "0.13.1"
|
|
wasm-mutate = "0.2.42"
|
|
wit-parser = "0.13.0"
|
|
wit-component = "0.19.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", default-features = false, features = ["std", "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.1"
|
|
http = "1.0.0"
|
|
http-body = "1.0.0"
|
|
http-body-util = "0.1.0"
|
|
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"
|
|
humantime = "2.0.0"
|
|
|
|
# =============================================================================
|
|
#
|
|
# Features for the Wasmtime CLI executable
|
|
#
|
|
#
|
|
# Note that many of these features are inherited from Wasmtime itself or
|
|
# otherwise configure the `wasmtime` crate's execution. Features are provided as
|
|
# compile-time switches to disable functionality primarily if one is interested
|
|
# in configuring binary size and or exploring the binary size implications of
|
|
# various features. Most features are enabled by default but most embeddings
|
|
# likely won't need all features.
|
|
[features]
|
|
default = [
|
|
# All subcommands are included by default.
|
|
"compile",
|
|
"explore",
|
|
"serve",
|
|
"wast",
|
|
"config",
|
|
|
|
# On-by-default WASI features
|
|
"wasi-nn",
|
|
"wasi-threads",
|
|
"wasi-http",
|
|
|
|
# Most features of Wasmtime are enabled by default.
|
|
"wat",
|
|
"parallel-compilation",
|
|
"pooling-allocator",
|
|
"cache",
|
|
"logging",
|
|
"demangle",
|
|
"cranelift",
|
|
"profiling",
|
|
"coredump",
|
|
"addr2line",
|
|
"debug-builtins",
|
|
|
|
# Enable some nice features of clap by default, but they come at a binary size
|
|
# cost, so allow disabling this through disabling of our own `default`
|
|
# feature.
|
|
"clap/default",
|
|
|
|
# By default include compatibility with the "old" CLI from Wasmtime 13 and
|
|
# prior.
|
|
"old-cli",
|
|
]
|
|
|
|
# ========================================
|
|
# Off-by-default features
|
|
#
|
|
# These features are off-by-default but may optionally be enabled.
|
|
all-arch = ["wasmtime/all-arch"]
|
|
winch = ["wasmtime/winch"]
|
|
wmemcheck = ["wasmtime/wmemcheck"]
|
|
|
|
# This feature, when enabled, will statically compile out all logging statements
|
|
# throughout Wasmtime and its dependencies.
|
|
disable-logging = ["log/max_level_off", "tracing/max_level_off"]
|
|
|
|
# ========================================
|
|
# On-by-default features
|
|
#
|
|
# These features are all included in the `default` set above and this is
|
|
# the internal mapping for what they enable in Wasmtime itself.
|
|
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"]
|
|
component-model = [
|
|
"wasmtime/component-model",
|
|
"wasmtime-wast/component-model",
|
|
"wasmtime-cli-flags/component-model"
|
|
]
|
|
wat = ["dep:wat", "wasmtime/wat"]
|
|
cache = ["dep:wasmtime-cache", "wasmtime-cli-flags/cache"]
|
|
parallel-compilation = ["wasmtime-cli-flags/parallel-compilation"]
|
|
logging = ["wasmtime-cli-flags/logging"]
|
|
demangle = ["wasmtime/demangle"]
|
|
cranelift = ["wasmtime-cli-flags/cranelift", "dep:wasmtime-cranelift"]
|
|
profiling = ["wasmtime/profiling"]
|
|
coredump = ["wasmtime-cli-flags/coredump"]
|
|
addr2line = ["wasmtime/addr2line"]
|
|
debug-builtins = ["wasmtime/debug-builtins"]
|
|
|
|
# Enables compatibility shims with Wasmtime 13 and prior's CLI.
|
|
old-cli = []
|
|
|
|
# CLI subcommands for the `wasmtime` executable. See `wasmtime $cmd --help`
|
|
# for more information on each subcommand.
|
|
serve = ["wasi-http", "component-model", "dep:http-body-util", "dep:http"]
|
|
explore = ["dep:wasmtime-explorer"]
|
|
wast = ["dep:wasmtime-wast"]
|
|
config = ["cache"]
|
|
compile = ["cranelift"]
|
|
|
|
[[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'
|
|
|