xref: /wasmtime-44.0.1/Cargo.toml (revision bda02c19)
1[package]
2name = "wasmtime-cli"
3version.workspace = true
4authors.workspace = true
5description = "Command-line interface for Wasmtime"
6license = "Apache-2.0 WITH LLVM-exception"
7documentation = "https://bytecodealliance.github.io/wasmtime/cli.html"
8categories = ["wasm"]
9keywords = ["webassembly", "wasm"]
10repository = "https://github.com/bytecodealliance/wasmtime"
11readme = "README.md"
12edition.workspace = true
13default-run = "wasmtime"
14rust-version.workspace = true
15
16[package.metadata.binstall]
17pkg-url = "{repo}/releases/download/v{version}/wasmtime-v{version}-{target-arch}-{target-family}{archive-suffix}"
18bin-dir = "wasmtime-v{version}-{target-arch}-{target-family}/{bin}{binary-ext}"
19pkg-fmt = "txz"
20[package.metadata.binstall.overrides.x86_64-apple-darwin]
21pkg-url = "{repo}/releases/download/v{version}/wasmtime-v{version}-{target-arch}-macos{archive-suffix}"
22bin-dir = "wasmtime-v{version}-{target-arch}-macos/{bin}{binary-ext}"
23[package.metadata.binstall.overrides.aarch64-apple-darwin]
24pkg-url = "{repo}/releases/download/v{version}/wasmtime-v{version}-{target-arch}-macos{archive-suffix}"
25bin-dir = "wasmtime-v{version}-{target-arch}-macos/{bin}{binary-ext}"
26[package.metadata.binstall.overrides.x86_64-pc-windows-msvc]
27pkg-fmt = "zip"
28[package.metadata.binstall.overrides.x86_64-pc-windows-gnu]
29pkg-fmt = "zip"
30[package.metadata.binstall.overrides.x86_64-unknown-linux-musl]
31pkg-url = "{repo}/releases/download/v{version}/wasmtime-v{version}-{target-arch}-musl{archive-suffix}"
32bin-dir = "wasmtime-v{version}-{target-arch}-musl/{bin}{binary-ext}"
33
34[lints]
35workspace = true
36
37[lib]
38doctest = false
39
40[[bin]]
41name = "wasmtime"
42path = "src/bin/wasmtime.rs"
43doc = false
44
45[dependencies]
46wasmtime = { workspace = true, features = ['std'] }
47wasmtime-cache = { workspace = true, optional = true }
48wasmtime-cli-flags = { workspace = true }
49wasmtime-cranelift = { workspace = true, optional = true }
50wasmtime-environ = { workspace = true }
51wasmtime-explorer = { workspace = true, optional = true }
52wasmtime-wast = { workspace = true, optional = true }
53wasi-common = { workspace = true, default-features = true, features = ["exit", "tokio"], optional = true }
54wasmtime-wasi = { workspace = true, default-features = true, optional = true }
55wasmtime-wasi-nn = { workspace = true, optional = true }
56wasmtime-wasi-config = { workspace = true, optional = true }
57wasmtime-wasi-tls = { workspace = true, optional = true }
58wasmtime-wasi-keyvalue = { workspace = true, optional = true }
59wasmtime-wasi-threads = { workspace = true, optional = true }
60wasmtime-wasi-http = { workspace = true, optional = true }
61wasmtime-unwinder = { workspace = true }
62wasmtime-wizer = { workspace = true, optional = true, features = ['clap', 'wasmtime'] }
63clap = { workspace = true }
64clap_complete = { workspace = true, optional = true }
65target-lexicon = { workspace = true }
66listenfd = { version = "1.0.0", optional = true }
67wat = { workspace = true, optional = true }
68serde = { workspace = true }
69serde_derive = { workspace = true }
70serde_json = { workspace = true }
71wasmparser = { workspace = true }
72tracing = { workspace = true, features = ['std'] }
73log = { workspace = true }
74tempfile = { workspace = true, optional = true }
75object = { workspace = true, optional = true }
76cranelift-codegen = { workspace = true, optional = true, features = ['disas'] }
77capstone = { workspace = true, optional = true }
78termcolor = { workspace = true, optional = true }
79gimli = { workspace = true, optional = true }
80pulley-interpreter = { workspace = true, optional = true }
81smallvec = { workspace = true }
82
83async-trait = { workspace = true }
84bytes = { workspace = true }
85cfg-if = { workspace = true }
86tokio = { workspace = true, optional = true, features = [ "signal", "macros" ] }
87hyper = { workspace = true, optional = true }
88http = { workspace = true, optional = true }
89http-body-util = { workspace = true, optional = true }
90futures = { workspace = true, optional = true }
91
92[target.'cfg(unix)'.dependencies]
93rustix = { workspace = true, features = ["mm", "process"] }
94
95[dev-dependencies]
96# depend again on wasmtime to activate its default features for tests
97wasmtime = { workspace = true, features = ['default', 'anyhow', 'winch', 'pulley', 'all-arch', 'call-hook', 'memory-protection-keys', 'component-model-async'] }
98env_logger = { workspace = true }
99log = { workspace = true }
100filecheck = { workspace = true }
101tempfile = { workspace = true }
102tokio = { workspace = true, features = ["rt", "time", "macros", "rt-multi-thread"] }
103wast = { workspace = true }
104criterion = { workspace = true }
105num_cpus = "1.17.0"
106memchr = "2.4"
107async-trait = { workspace = true }
108wat = { workspace = true }
109rayon = "1.5.0"
110wasmtime-wast = { workspace = true, features = ['component-model'] }
111wasmtime-component-util = { workspace = true }
112wasmtime-test-util = { workspace = true, features = ['wasmtime-wast', 'component'] }
113bstr = "1.6.0"
114libc = { workspace = true }
115serde = { workspace = true }
116serde_json = { workspace = true }
117walkdir = { workspace = true }
118test-programs-artifacts = { workspace = true }
119bytesize = "2.0.1"
120wit-component = { workspace = true }
121cranelift-filetests = { workspace = true }
122cranelift-codegen = { workspace = true, features = ["disas", "trace-log", "timing"] }
123cranelift-reader = { workspace = true }
124toml = { workspace = true }
125similar = { workspace = true }
126libtest-mimic = { workspace = true }
127capstone = { workspace = true }
128object = { workspace = true, features = ['std'] }
129wasmtime-test-macros = { path = "crates/test-macros" }
130pulley-interpreter = { workspace = true, features = ["disas"] }
131wasm-encoder = { workspace = true }
132cranelift-native = { workspace = true }
133futures = { workspace = true }
134
135# Should only be used for tests that are explicitly testing `anyhow::Error` and
136# `wasmtime::Error` integration and conversion. Otherwise, always prefer to use
137# `wasmtime::Error`.
138anyhow-for-testing = { workspace = true }
139
140[target.'cfg(windows)'.dev-dependencies]
141windows-sys = { workspace = true, features = ["Win32_System_Memory"] }
142
143[target.'cfg(unix)'.dev-dependencies]
144rustix = { workspace = true, features = ["param"] }
145
146[profile.release.build-override]
147opt-level = 0
148
149[workspace]
150resolver = '2'
151members = [
152  "cranelift",
153  "cranelift/assembler-x64/fuzz",
154  "cranelift/isle/fuzz",
155  "cranelift/isle/islec",
156  "cranelift/isle/veri/veri_engine",
157  "cranelift/isle/veri/veri_ir",
158  "cranelift/serde",
159  "crates/bench-api",
160  "crates/c-api/artifact",
161  "crates/environ/fuzz",
162  "crates/misc/component-async-tests",
163  "crates/test-programs",
164  "crates/wasi-preview1-component-adapter",
165  "crates/wasi-preview1-component-adapter/verify",
166  "crates/wasi-tls-nativetls",
167  "crates/wasi-tls-openssl",
168  "crates/debugger",
169  "crates/wizer/fuzz",
170  "crates/wizer/tests/regex-test",
171  "crates/wizer/benches/regex-bench",
172  "crates/wizer/benches/uap-bench",
173  "examples/fib-debug/wasm",
174  "examples/wasm",
175  "examples/tokio/wasm",
176  "examples/component/wasm",
177  "examples/resource-component/wasm",
178  "examples/min-platform",
179  "examples/min-platform/embedding",
180  "examples/wasip2-plugins",
181  "fuzz",
182  "winch/codegen",
183]
184exclude = [
185  'docs/rust_wasi_markdown_parser',
186]
187
188[workspace.package]
189version = "43.0.0"
190authors = ["The Wasmtime Project Developers"]
191edition = "2024"
192# Wasmtime's current policy is that this number can be no larger than the
193# current stable release of Rust minus 2.
194rust-version = "1.91.0"
195
196[workspace.lints.rust]
197# Turn on some lints which are otherwise allow-by-default in rustc.
198unused_extern_crates = 'warn'
199trivial_numeric_casts = 'warn'
200unstable_features = 'warn'
201unused_import_braces = 'warn'
202unused-lifetimes = 'warn'
203unused-macro-rules = 'warn'
204
205# Don't warn about unknown cfgs for pulley
206[workspace.lints.rust.unexpected_cfgs]
207level = "warn"
208check-cfg = [
209  'cfg(pulley_tail_calls)',
210  'cfg(pulley_assume_llvm_makes_tail_calls)',
211  'cfg(pulley_disable_interp_simd)',
212]
213
214[workspace.lints.clippy]
215# The default set of lints in Clippy is viewed as "too noisy" right now so
216# they're all turned off by default. Selective lints are then enabled below as
217# necessary.
218all = { level = 'allow', priority = -1 }
219clone_on_copy = 'warn'
220map_clone = 'warn'
221uninlined_format_args = 'warn'
222unnecessary_to_owned = 'warn'
223manual_strip = 'warn'
224useless_conversion = 'warn'
225unnecessary_mut_passed = 'warn'
226unnecessary_fallible_conversions = 'warn'
227unnecessary_cast = 'warn'
228allow_attributes_without_reason = 'warn'
229from_over_into = 'warn'
230redundant_field_names = 'warn'
231multiple_bound_locations = 'warn'
232extra_unused_type_parameters = 'warn'
233
234[workspace.dependencies]
235# Public crates related to Wasmtime.
236#
237# These crates are intended to be depended upon publicly to varying degrees. For
238# example `wasmtime` is very much intended to be used, as well as WASI crates
239# like `wasmtime-wasi`. Crates like `wasmtime-environ` are useful for ecosystem
240# tooling but aren't intended to be widely depended on.
241#
242# All of these crates are supported though in the sense that
243wasmtime = { path = "crates/wasmtime", version = "43.0.0", default-features = false }
244wasmtime-cli-flags = { path = "crates/cli-flags", version = "=43.0.0" }
245wasmtime-environ = { path = "crates/environ", version = "=43.0.0" }
246wasmtime-wasi = { path = "crates/wasi", version = "43.0.0", default-features = false }
247wasmtime-wasi-io = { path = "crates/wasi-io", version = "43.0.0", default-features = false }
248wasmtime-wasi-http = { path = "crates/wasi-http", version = "43.0.0", default-features = false }
249wasmtime-wasi-nn = { path = "crates/wasi-nn", version = "43.0.0" }
250wasmtime-wasi-config = { path = "crates/wasi-config", version = "43.0.0" }
251wasmtime-wasi-keyvalue = { path = "crates/wasi-keyvalue", version = "43.0.0" }
252wasmtime-wasi-threads = { path = "crates/wasi-threads", version = "43.0.0" }
253wasmtime-wasi-tls = { path = "crates/wasi-tls", version = "43.0.0" }
254wasmtime-wasi-tls-nativetls = { path = "crates/wasi-tls-nativetls", version = "43.0.0" }
255wasmtime-wasi-tls-openssl = { path = "crates/wasi-tls-openssl", version = "43.0.0" }
256wasmtime-wast = { path = "crates/wast", version = "=43.0.0" }
257
258# Internal Wasmtime-specific crates.
259#
260# Note that all crates here are actually named `wasmtime-internal-*` as their
261# package name which is what will show up on crates.io. This is done to signal
262# that these are internal unsupported crates for external use. These exist as
263# part of the project organization of other public crates in Wasmtime and are
264# otherwise not supported in terms of CVEs for example.
265wasmtime-core = { path = "crates/core", version = "=43.0.0", package = 'wasmtime-internal-core' }
266wasmtime-wmemcheck = { path = "crates/wmemcheck", version = "=43.0.0", package = 'wasmtime-internal-wmemcheck' }
267wasmtime-c-api-macros = { path = "crates/c-api-macros", version = "=43.0.0", package = 'wasmtime-internal-c-api-macros' }
268wasmtime-cache = { path = "crates/cache", version = "=43.0.0", package = 'wasmtime-internal-cache' }
269wasmtime-cranelift = { path = "crates/cranelift", version = "=43.0.0", package = 'wasmtime-internal-cranelift' }
270wasmtime-winch = { path = "crates/winch", version = "=43.0.0", package = 'wasmtime-internal-winch'  }
271wasmtime-explorer = { path = "crates/explorer", version = "=43.0.0", package = 'wasmtime-internal-explorer'  }
272wasmtime-fiber = { path = "crates/fiber", version = "=43.0.0", package = 'wasmtime-internal-fiber' }
273wasmtime-jit-debug = { path = "crates/jit-debug", version = "=43.0.0", package = 'wasmtime-internal-jit-debug' }
274wasmtime-component-util = { path = "crates/component-util", version = "=43.0.0", package = 'wasmtime-internal-component-util' }
275wasmtime-component-macro = { path = "crates/component-macro", version = "=43.0.0", package = 'wasmtime-internal-component-macro' }
276wasmtime-versioned-export-macros = { path = "crates/versioned-export-macros", version = "=43.0.0", package = 'wasmtime-internal-versioned-export-macros' }
277wasmtime-jit-icache-coherence = { path = "crates/jit-icache-coherence", version = "=43.0.0", package = 'wasmtime-internal-jit-icache-coherence' }
278wasmtime-wit-bindgen = { path = "crates/wit-bindgen", version = "=43.0.0", package = 'wasmtime-internal-wit-bindgen' }
279wasmtime-unwinder = { path = "crates/unwinder", version = "=43.0.0", package = 'wasmtime-internal-unwinder' }
280wasmtime-debugger = { path = "crates/debugger", version = "=43.0.0", package = "wasmtime-internal-debugger" }
281wasmtime-wizer = { path = "crates/wizer", version = "43.0.0" }
282
283# Miscellaneous crates without a `wasmtime-*` prefix in their name but still
284# used in the `wasmtime-*` family of crates depending on various features/etc.
285wiggle = { path = "crates/wiggle", version = "=43.0.0", default-features = false }
286wiggle-macro = { path = "crates/wiggle/macro", version = "=43.0.0" }
287wiggle-generate = { path = "crates/wiggle/generate", version = "=43.0.0" }
288wasi-common = { path = "crates/wasi-common", version = "=43.0.0", default-features = false }
289pulley-interpreter = { path = 'pulley', version = "=43.0.0" }
290pulley-macros = { path = 'pulley/macros', version = "=43.0.0" }
291
292# Cranelift crates in this workspace
293cranelift-assembler-x64 = { path = "cranelift/assembler-x64", version = "0.130.0" }
294cranelift-codegen = { path = "cranelift/codegen", version = "0.130.0", default-features = false, features = ["std", "unwind"] }
295cranelift-frontend = { path = "cranelift/frontend", version = "0.130.0" }
296cranelift-entity = { path = "cranelift/entity", version = "0.130.0" }
297cranelift-native = { path = "cranelift/native", version = "0.130.0" }
298cranelift-module = { path = "cranelift/module", version = "0.130.0" }
299cranelift-interpreter = { path = "cranelift/interpreter", version = "0.130.0" }
300cranelift-reader = { path = "cranelift/reader", version = "0.130.0" }
301cranelift-filetests = { path = "cranelift/filetests" }
302cranelift-object = { path = "cranelift/object", version = "0.130.0" }
303cranelift-jit = { path = "cranelift/jit", version = "0.130.0" }
304cranelift-fuzzgen = { path = "cranelift/fuzzgen" }
305cranelift-bforest = { path = "cranelift/bforest", version = "0.130.0" }
306cranelift-bitset = { path = "cranelift/bitset", version = "0.130.0" }
307cranelift-control = { path = "cranelift/control", version = "0.130.0", default-features = false }
308cranelift-srcgen = { path = "cranelift/srcgen", version = "0.130.0" }
309cranelift = { path = "cranelift/umbrella", version = "0.130.0" }
310
311# Winch crates in this workspace.
312winch-codegen = { path = "winch/codegen", version = "=43.0.0" }
313
314# Internal crates not published to crates.io used in testing, builds, etc
315wasi-preview1-component-adapter = { path = "crates/wasi-preview1-component-adapter" }
316wasmtime-fuzzing = { path = "crates/fuzzing" }
317test-programs-artifacts = { path = 'crates/test-programs/artifacts' }
318wasmtime-test-util = { path = "crates/test-util" }
319byte-array-literals = { path = "crates/wasi-preview1-component-adapter/byte-array-literals" }
320pulley-interpreter-fuzz = { path = 'pulley/fuzz' }
321component-async-tests = { path = "crates/misc/component-async-tests" }
322
323# Bytecode Alliance maintained dependencies:
324# ---------------------------
325regalloc2 = "0.13.4"
326wasip1 = { version = "1.0.0", default-features = false }
327
328# cap-std family:
329target-lexicon = "0.13.0"
330cap-std = "3.4.5"
331cap-rand = { version = "3.4.5", features = ["small_rng"] }
332cap-fs-ext = "3.4.5"
333cap-net-ext = "3.4.5"
334cap-time-ext = "3.4.5"
335cap-tempfile = "3.4.5"
336fs-set-times = "0.20.3"
337system-interface = { version = "0.27.3", features = ["cap_std_impls"] }
338io-lifetimes = { version = "2.0.3", default-features = false }
339io-extras = "0.18.4"
340rustix = "1.0.8"
341# wit-bindgen:
342wit-bindgen = { version = "0.53.0", default-features = false }
343wit-bindgen-rust-macro = { version = "0.53.0", default-features = false }
344
345# wasm-tools family:
346wasmparser = { version = "0.245.0", default-features = false, features = ['simd'] }
347wat = "1.245.0"
348wast = "245.0.0"
349wasmprinter = "0.245.0"
350wasm-encoder = "0.245.0"
351wasm-smith = "0.245.0"
352wasm-mutate = "0.245.0"
353wit-parser = "0.245.0"
354wit-component = "0.245.0"
355wasm-wave = "0.245.0"
356wasm-compose = "0.245.0"
357json-from-wast = "0.245.0"
358
359# Non-Bytecode Alliance maintained dependencies:
360# --------------------------
361arbitrary = "1.4.2"
362backtrace = "0.3.75"
363mutatis = "0.3.2"
364cc = "1.2.41"
365object = { version = "0.38.1", default-features = false, features = ['read_core', 'elf'] }
366gimli = { version = "0.33.0", default-features = false, features = ['read'] }
367addr2line = { version = "0.26.0", default-features = false }
368anyhow = { version = "1.0.100", default-features = false }
369anyhow-for-testing = { package = "anyhow", version = "1.0.100", default-features = false }
370windows-sys = "0.61.2"
371env_logger = "0.11.5"
372log = { version = "0.4.28", default-features = false }
373clap = { version = "4.5.48", default-features = false, features = ["std", "derive"] }
374clap_complete = "4.5.58"
375hashbrown = { version = "0.16", default-features = false }
376capstone = "0.13.0"
377smallvec = { version = "1.15.1", features = ["union"] }
378tracing = { version = "0.1.41", default-features = false }
379bitflags = "2.9.4"
380thiserror = "2.0.17"
381async-trait = "0.1.89"
382heck = "0.5"
383similar = "2.7.0"
384toml = "0.9.8"
385mach2 = "0.4.2"
386memfd = "0.6.5"
387psm = "0.1.11"
388proptest = "1.0.0"
389rand = { version = "0.9.2", features = ["small_rng"] }
390# serde and serde_derive must have the same version
391serde = { version = "1.0.228", default-features = false, features = ['alloc'] }
392serde_derive = "1.0.228"
393serde_json = "1.0.80"
394glob = "0.3.3"
395libfuzzer-sys = "0.4.10"
396walkdir = "2.5.0"
397cfg-if = "1.0"
398tempfile = "3.23.0"
399filecheck = "0.5.0"
400libc = { version = "0.2.177", default-features = true }
401file-per-thread-logger = "0.2.0"
402tokio = { version = "1.48.0", features = [ "rt", "time" ] }
403hyper = "1.7.0"
404http = "1.3.1"
405http-body = "1.0.1"
406http-body-util = "0.1.3"
407bytes = { version = "1.10.1", default-features = false }
408futures = { version = "0.3.31", default-features = false }
409indexmap = { version = "2.11.4", default-features = false }
410syn = "2.0.106"
411quote = "1.0.41"
412proc-macro2 = "1.0.101"
413test-log = { version = "0.2.18", default-features = false, features = ["trace"] }
414tracing-subscriber = { version = "0.3.20", default-features = false, features = ['fmt', 'env-filter', 'ansi', 'tracing-log'] }
415url = "2.5.7"
416postcard = { version = "1.1.3", default-features = false, features = ['alloc'] }
417criterion = { version = "0.7.0", default-features = false, features = ["html_reports", "rayon"] }
418rustc-hash = { version = "2.1.1", default-features = false }
419libtest-mimic = "0.8.1"
420semver = { version = "1.0.27", default-features = false }
421ittapi = "0.4.0"
422libm = "0.2.16"
423tokio-rustls = "0.25.0"
424rustls = "0.22.0"
425tokio-native-tls = "0.3.1"
426native-tls = "0.2.11"
427tokio-openssl = "0.6.5"
428openssl = "0.10.73"
429openssl-sys = "0.9.109"
430webpki-roots = "0.26.0"
431itertools = "0.14.0"
432base64 = "0.22.1"
433termcolor = "1.4.1"
434flate2 = "1.1.4"
435tokio-util = "0.7.16"
436arbtest = "0.3.2"
437rayon = "1.5.3"
438regex = "1.9.1"
439pin-project-lite = "0.2.14"
440
441# =============================================================================
442#
443# Features for the Wasmtime CLI executable
444#
445#
446# Note that many of these features are inherited from Wasmtime itself or
447# otherwise configure the `wasmtime` crate's execution. Features are provided as
448# compile-time switches to disable functionality primarily if one is interested
449# in configuring binary size and or exploring the binary size implications of
450# various features. Most features are enabled by default but most embeddings
451# likely won't need all features.
452#
453# When adding or removing a feature, make sure to keep the C API in sync by
454# modifying locations marked WASMTIME_FEATURE_LIST
455[features]
456default = [
457  # All subcommands are included by default.
458  "run",
459  "compile",
460  "explore",
461  "serve",
462  "wast",
463  "config",
464  "completion",
465  "objdump",
466  "wizer",
467
468  # On-by-default WASI features
469  "wasi-nn",
470  "wasi-threads",
471  "wasi-http",
472  "wasi-config",
473  "wasi-keyvalue",
474  "wasi-tls",
475
476  # Most features of Wasmtime are enabled by default.
477  "backtrace",
478  "wat",
479  "parallel-compilation",
480  "pooling-allocator",
481  "cache",
482  "logging",
483  "demangle",
484  "cranelift",
485  "profiling",
486  "coredump",
487  "addr2line",
488  "debug-builtins",
489  "component-model",
490  "component-model-async",
491  "threads",
492  "gc",
493  "gc-drc",
494  "gc-null",
495  "stack-switching",
496  "winch",
497  "pulley",
498  "debug",
499
500  # Enable some nice features of clap by default, but they come at a binary size
501  # cost, so allow disabling this through disabling of our own `default`
502  # feature.
503  "clap/default",
504  "clap/wrap_help",
505]
506
507# ========================================
508# Off-by-default features
509#
510# These features are off-by-default but may optionally be enabled.
511all-arch = ["wasmtime/all-arch"]
512winch = ["wasmtime/winch"]
513wmemcheck = ["wasmtime/wmemcheck"]
514trace-log = ["wasmtime/trace-log"]
515memory-protection-keys = ["wasmtime-cli-flags/memory-protection-keys"]
516profile-pulley = ["wasmtime/profile-pulley"]
517component-model-async = [
518  "wasmtime-cli-flags/component-model-async",
519  "component-model",
520  "wasmtime-wasi?/p3",
521  "wasmtime-wasi-http?/p3",
522  "dep:futures",
523]
524rr = ["wasmtime/rr", "component-model", "wasmtime-cli-flags/rr", "run"]
525
526# This feature, when enabled, will statically compile out all logging statements
527# throughout Wasmtime and its dependencies.
528disable-logging = ["log/max_level_off", "tracing/max_level_off"]
529
530# ========================================
531# On-by-default features
532#
533# These features are all included in the `default` set above and this is
534# the internal mapping for what they enable in Wasmtime itself.
535wasi-nn = ["dep:wasmtime-wasi-nn"]
536wasi-tls = ["dep:wasmtime-wasi-tls"]
537wasi-threads = ["dep:wasmtime-wasi-threads", "threads"]
538wasi-http = ["component-model", "dep:wasmtime-wasi-http", "dep:tokio", "dep:hyper", "wasmtime-wasi-http/default-send-request"]
539wasi-config = ["dep:wasmtime-wasi-config"]
540wasi-keyvalue = ["dep:wasmtime-wasi-keyvalue"]
541pooling-allocator = ["wasmtime/pooling-allocator", "wasmtime-cli-flags/pooling-allocator"]
542backtrace = ["wasmtime/backtrace"]
543component-model = [
544  "wasmtime/component-model",
545  "wasmtime-wast?/component-model",
546  "wasmtime-cli-flags/component-model",
547  "wasmtime-wizer?/component-model",
548]
549wat = ["dep:wat", "wasmtime/wat"]
550cache = ["dep:wasmtime-cache", "wasmtime-cli-flags/cache"]
551parallel-compilation = ["wasmtime-cli-flags/parallel-compilation"]
552logging = ["wasmtime-cli-flags/logging"]
553demangle = ["wasmtime/demangle"]
554cranelift = ["wasmtime-cli-flags/cranelift", "dep:wasmtime-cranelift"]
555profiling = ["wasmtime/profiling", "wasmtime/call-hook"]
556coredump = ["wasmtime-cli-flags/coredump"]
557addr2line = ["wasmtime/addr2line"]
558debug-builtins = ["wasmtime/debug-builtins"]
559threads = ["wasmtime-cli-flags/threads"]
560gc = ["wasmtime-cli-flags/gc", "wasmtime/gc"]
561gc-drc = ["gc", "wasmtime/gc-drc", "wasmtime-cli-flags/gc-drc"]
562gc-null = ["gc", "wasmtime/gc-null", "wasmtime-cli-flags/gc-null"]
563pulley = ["wasmtime-cli-flags/pulley"]
564stack-switching = ["wasmtime/stack-switching", "wasmtime-cli-flags/stack-switching"]
565debug = ["wasmtime-cli-flags/debug", "wasmtime/debug"]
566
567# CLI subcommands for the `wasmtime` executable. See `wasmtime $cmd --help`
568# for more information on each subcommand.
569serve = [
570  "wasi-http",
571  "wasmtime-wasi-http/component-model-async",
572  "component-model",
573  "dep:http-body-util",
574  "dep:http",
575  "wasmtime-cli-flags/async",
576]
577explore = ["dep:wasmtime-explorer", "dep:tempfile"]
578wast = ["dep:wasmtime-wast"]
579config = ["cache"]
580compile = ["cranelift"]
581run = [
582  "dep:wasmtime-wasi",
583  "wasmtime/runtime",
584  "wasmtime/wave",
585  "dep:listenfd",
586  "dep:wasi-common",
587  "dep:tokio",
588  "wasmtime-cli-flags/async",
589]
590completion = ["dep:clap_complete"]
591objdump = [
592  'dep:object',
593  'dep:cranelift-codegen',
594  'dep:capstone',
595  'dep:termcolor',
596  'dep:gimli',
597  'pulley-interpreter/disas',
598]
599wizer = [
600  "wasmtime-wizer",
601  "dep:wasmtime-wasi",
602  "dep:wasi-common",
603  "dep:tokio",
604  "wasmtime/wave",
605]
606
607[[test]]
608name = "disas"
609harness = false
610
611[[test]]
612name = "wast"
613harness = false
614
615[[test]]
616name = "wasi"
617harness = false
618
619[[example]]
620name = "tokio"
621required-features = ["wasi-common/tokio"]
622
623[[bench]]
624name = "compile"
625harness = false
626
627[[bench]]
628name = "instantiation"
629harness = false
630
631[[bench]]
632name = "thread_eager_init"
633harness = false
634
635[[bench]]
636name = "trap"
637harness = false
638
639[[bench]]
640name = "call"
641harness = false
642
643[[bench]]
644name = "wasi"
645harness = false
646
647[profile.release.package.wasi-preview1-component-adapter]
648opt-level = 's'
649strip = 'debuginfo'
650
651[profile.dev.package.wasi-preview1-component-adapter]
652# Make dev look like a release build since this adapter module won't work with
653# a debug build that uses data segments and such.
654incremental = false
655opt-level = 's'
656# Omit assertions, which include failure messages which require string
657# initializers.
658debug-assertions = false
659# Omit integer overflow checks, which include failure messages which require
660# string initializers.
661overflow-checks = false
662
663# Same as `wasi-preview1-component-adapter` above
664[profile.dev.package.wit-bindgen]
665incremental = false
666debug-assertions = false
667overflow-checks = false
668opt-level = 's'
669
670[profile.profiling]
671inherits = "bench"
672debug = "line-tables-only"
673
674[profile.fastest-runtime]
675inherits = "release"
676codegen-units = 1
677lto = true
678