xref: /wasmtime-44.0.1/Cargo.toml (revision 6f6a514b)
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 }
61clap = { workspace = true }
62clap_complete = { workspace = true, optional = true }
63anyhow = { workspace = true, features = ['std'] }
64target-lexicon = { workspace = true }
65listenfd = { version = "1.0.0", optional = true }
66wat = { workspace = true, optional = true }
67serde = { workspace = true }
68serde_derive = { workspace = true }
69serde_json = { workspace = true }
70wasmparser = { workspace = true }
71tracing = { workspace = true }
72log = { workspace = true }
73tempfile = { workspace = true, optional = true }
74object = { workspace = true, optional = true }
75cranelift-codegen = { workspace = true, optional = true, features = ['disas'] }
76capstone = { workspace = true, optional = true }
77termcolor = { workspace = true, optional = true }
78gimli = { workspace = true, optional = true }
79pulley-interpreter = { workspace = true, optional = true }
80
81async-trait = { workspace = true }
82bytes = { workspace = true }
83cfg-if = { workspace = true }
84tokio = { workspace = true, optional = true, features = [ "signal", "macros" ] }
85hyper = { workspace = true, optional = true }
86http = { workspace = true, optional = true }
87http-body-util = { workspace = true, optional = true }
88
89[target.'cfg(unix)'.dependencies]
90rustix = { workspace = true, features = ["mm", "process"] }
91
92[dev-dependencies]
93# depend again on wasmtime to activate its default features for tests
94wasmtime = { workspace = true, features = ['default', 'winch', 'pulley', 'all-arch', 'call-hook', 'memory-protection-keys', 'component-model-async'] }
95env_logger = { workspace = true }
96log = { workspace = true }
97filecheck = { workspace = true }
98tempfile = { workspace = true }
99tokio = { workspace = true, features = ["rt", "time", "macros", "rt-multi-thread"] }
100wast = { workspace = true }
101criterion = { workspace = true }
102num_cpus = "1.13.0"
103memchr = "2.4"
104async-trait = { workspace = true }
105wat = { workspace = true }
106rayon = "1.5.0"
107wasmtime-wast = { workspace = true, features = ['component-model'] }
108wasmtime-component-util = { workspace = true }
109wasmtime-test-util = { workspace = true, features = ['wasmtime-wast', 'component'] }
110bstr = "1.6.0"
111libc = { workspace = true }
112serde = { workspace = true }
113serde_json = { workspace = true }
114walkdir = { workspace = true }
115test-programs-artifacts = { workspace = true }
116bytesize = "2.0.1"
117wit-component = { workspace = true }
118cranelift-filetests = { workspace = true }
119cranelift-codegen = { workspace = true, features = ["disas", "trace-log", "timing"] }
120cranelift-reader = { workspace = true }
121toml = { workspace = true }
122similar = { workspace = true }
123libtest-mimic = { workspace = true }
124capstone = { workspace = true }
125object = { workspace = true, features = ['std'] }
126wasmtime-test-macros = { path = "crates/test-macros" }
127pulley-interpreter = { workspace = true, features = ["disas"] }
128wasm-encoder = { workspace = true }
129cranelift-native = { workspace = true }
130futures = { workspace = true }
131
132[target.'cfg(windows)'.dev-dependencies]
133windows-sys = { workspace = true, features = ["Win32_System_Memory"] }
134
135[target.'cfg(unix)'.dev-dependencies]
136rustix = { workspace = true, features = ["param"] }
137
138[build-dependencies]
139anyhow = { workspace = true, features = ['std'] }
140
141[profile.release.build-override]
142opt-level = 0
143
144[workspace]
145resolver = '2'
146members = [
147  "cranelift",
148  "cranelift/assembler-x64/fuzz",
149  "cranelift/isle/fuzz",
150  "cranelift/isle/islec",
151  "cranelift/isle/veri/veri_engine",
152  "cranelift/isle/veri/veri_ir",
153  "cranelift/serde",
154  "crates/bench-api",
155  "crates/c-api/artifact",
156  "crates/environ/fuzz",
157  "crates/misc/component-async-tests",
158  "crates/test-programs",
159  "crates/wasi-preview1-component-adapter",
160  "crates/wasi-preview1-component-adapter/verify",
161  "crates/wasi-tls-nativetls",
162  "examples/fib-debug/wasm",
163  "examples/wasm",
164  "examples/tokio/wasm",
165  "examples/component/wasm",
166  "examples/resource-component/wasm",
167  "examples/min-platform",
168  "examples/min-platform/embedding",
169  "fuzz",
170  "winch/codegen",
171]
172exclude = [
173  'docs/rust_wasi_markdown_parser',
174]
175
176[workspace.package]
177version = "37.0.0"
178authors = ["The Wasmtime Project Developers"]
179edition = "2024"
180# Wasmtime's current policy is that this number can be no larger than the
181# current stable release of Rust minus 2.
182rust-version = "1.87.0"
183
184[workspace.lints.rust]
185# Turn on some lints which are otherwise allow-by-default in rustc.
186unused_extern_crates = 'warn'
187trivial_numeric_casts = 'warn'
188unstable_features = 'warn'
189unused_import_braces = 'warn'
190unused-lifetimes = 'warn'
191unused-macro-rules = 'warn'
192
193# Don't warn about unknown cfgs for pulley
194[workspace.lints.rust.unexpected_cfgs]
195level = "warn"
196check-cfg = [
197  'cfg(pulley_tail_calls)',
198  'cfg(pulley_assume_llvm_makes_tail_calls)',
199  'cfg(pulley_disable_interp_simd)',
200]
201
202[workspace.lints.clippy]
203# The default set of lints in Clippy is viewed as "too noisy" right now so
204# they're all turned off by default. Selective lints are then enabled below as
205# necessary.
206all = { level = 'allow', priority = -1 }
207clone_on_copy = 'warn'
208map_clone = 'warn'
209uninlined_format_args = 'warn'
210unnecessary_to_owned = 'warn'
211manual_strip = 'warn'
212useless_conversion = 'warn'
213unnecessary_mut_passed = 'warn'
214unnecessary_fallible_conversions = 'warn'
215unnecessary_cast = 'warn'
216allow_attributes_without_reason = 'warn'
217from_over_into = 'warn'
218redundant_field_names = 'warn'
219multiple_bound_locations = 'warn'
220
221[workspace.dependencies]
222# Public crates related to Wasmtime.
223#
224# These crates are intended to be depended upon publicly to varying degrees. For
225# example `wasmtime` is very much intended to be used, as well as WASI crates
226# like `wasmtime-wasi`. Crates like `wasmtime-environ` are useful for ecosystem
227# tooling but aren't intended to be widely depended on.
228#
229# All of these crates are supported though in the sense that
230wasmtime = { path = "crates/wasmtime", version = "37.0.0", default-features = false }
231wasmtime-cli-flags = { path = "crates/cli-flags", version = "=37.0.0" }
232wasmtime-environ = { path = "crates/environ", version = "=37.0.0" }
233wasmtime-wasi = { path = "crates/wasi", version = "37.0.0", default-features = false }
234wasmtime-wasi-io = { path = "crates/wasi-io", version = "37.0.0", default-features = false }
235wasmtime-wasi-http = { path = "crates/wasi-http", version = "37.0.0", default-features = false }
236wasmtime-wasi-nn = { path = "crates/wasi-nn", version = "37.0.0" }
237wasmtime-wasi-config = { path = "crates/wasi-config", version = "37.0.0" }
238wasmtime-wasi-keyvalue = { path = "crates/wasi-keyvalue", version = "37.0.0" }
239wasmtime-wasi-threads = { path = "crates/wasi-threads", version = "37.0.0" }
240wasmtime-wasi-tls = { path = "crates/wasi-tls", version = "37.0.0" }
241wasmtime-wasi-tls-nativetls = { path = "crates/wasi-tls-nativetls", version = "37.0.0" }
242wasmtime-wast = { path = "crates/wast", version = "=37.0.0" }
243
244# Internal Wasmtime-specific crates.
245#
246# Note that all crates here are actually named `wasmtime-internal-*` as their
247# package name which is what will show up on crates.io. This is done to signal
248# that these are internal unsupported crates for external use. These exist as
249# part of the project organization of other public crates in Wasmtime and are
250# otherwise not supported in terms of CVEs for example.
251wasmtime-wmemcheck = { path = "crates/wmemcheck", version = "=37.0.0", package = 'wasmtime-internal-wmemcheck' }
252wasmtime-c-api-macros = { path = "crates/c-api-macros", version = "=37.0.0", package = 'wasmtime-internal-c-api-macros' }
253wasmtime-cache = { path = "crates/cache", version = "=37.0.0", package = 'wasmtime-internal-cache' }
254wasmtime-cranelift = { path = "crates/cranelift", version = "=37.0.0", package = 'wasmtime-internal-cranelift' }
255wasmtime-winch = { path = "crates/winch", version = "=37.0.0", package = 'wasmtime-internal-winch'  }
256wasmtime-explorer = { path = "crates/explorer", version = "=37.0.0", package = 'wasmtime-internal-explorer'  }
257wasmtime-fiber = { path = "crates/fiber", version = "=37.0.0", package = 'wasmtime-internal-fiber' }
258wasmtime-jit-debug = { path = "crates/jit-debug", version = "=37.0.0", package = 'wasmtime-internal-jit-debug' }
259wasmtime-component-util = { path = "crates/component-util", version = "=37.0.0", package = 'wasmtime-internal-component-util' }
260wasmtime-component-macro = { path = "crates/component-macro", version = "=37.0.0", package = 'wasmtime-internal-component-macro' }
261wasmtime-asm-macros = { path = "crates/asm-macros", version = "=37.0.0", package = 'wasmtime-internal-asm-macros' }
262wasmtime-versioned-export-macros = { path = "crates/versioned-export-macros", version = "=37.0.0", package = 'wasmtime-internal-versioned-export-macros' }
263wasmtime-slab = { path = "crates/slab", version = "=37.0.0", package = 'wasmtime-internal-slab' }
264wasmtime-jit-icache-coherence = { path = "crates/jit-icache-coherence", version = "=37.0.0", package = 'wasmtime-internal-jit-icache-coherence' }
265wasmtime-wit-bindgen = { path = "crates/wit-bindgen", version = "=37.0.0", package = 'wasmtime-internal-wit-bindgen' }
266wasmtime-math = { path = "crates/math", version = "=37.0.0", package = 'wasmtime-internal-math'  }
267wasmtime-unwinder = { path = "crates/unwinder", version = "=37.0.0", package = 'wasmtime-internal-unwinder' }
268
269# Miscellaneous crates without a `wasmtime-*` prefix in their name but still
270# used in the `wasmtime-*` family of crates depending on various features/etc.
271wiggle = { path = "crates/wiggle", version = "=37.0.0", default-features = false }
272wiggle-macro = { path = "crates/wiggle/macro", version = "=37.0.0" }
273wiggle-generate = { path = "crates/wiggle/generate", version = "=37.0.0" }
274wasi-common = { path = "crates/wasi-common", version = "=37.0.0", default-features = false }
275pulley-interpreter = { path = 'pulley', version = "=37.0.0" }
276pulley-macros = { path = 'pulley/macros', version = "=37.0.0" }
277
278# Cranelift crates in this workspace
279cranelift-assembler-x64 = { path = "cranelift/assembler-x64", version = "0.124.0" }
280cranelift-codegen = { path = "cranelift/codegen", version = "0.124.0", default-features = false, features = ["std", "unwind"] }
281cranelift-frontend = { path = "cranelift/frontend", version = "0.124.0" }
282cranelift-entity = { path = "cranelift/entity", version = "0.124.0" }
283cranelift-native = { path = "cranelift/native", version = "0.124.0" }
284cranelift-module = { path = "cranelift/module", version = "0.124.0" }
285cranelift-interpreter = { path = "cranelift/interpreter", version = "0.124.0" }
286cranelift-reader = { path = "cranelift/reader", version = "0.124.0" }
287cranelift-filetests = { path = "cranelift/filetests" }
288cranelift-object = { path = "cranelift/object", version = "0.124.0" }
289cranelift-jit = { path = "cranelift/jit", version = "0.124.0" }
290cranelift-fuzzgen = { path = "cranelift/fuzzgen" }
291cranelift-bforest = { path = "cranelift/bforest", version = "0.124.0" }
292cranelift-bitset = { path = "cranelift/bitset", version = "0.124.0" }
293cranelift-control = { path = "cranelift/control", version = "0.124.0" }
294cranelift-srcgen = { path = "cranelift/srcgen", version = "0.124.0" }
295cranelift = { path = "cranelift/umbrella", version = "0.124.0" }
296
297# Winch crates in this workspace.
298winch-codegen = { path = "winch/codegen", version = "=37.0.0" }
299
300# Internal crates not published to crates.io used in testing, builds, etc
301wasi-preview1-component-adapter = { path = "crates/wasi-preview1-component-adapter" }
302wasmtime-fuzzing = { path = "crates/fuzzing" }
303test-programs-artifacts = { path = 'crates/test-programs/artifacts' }
304wasmtime-test-util = { path = "crates/test-util" }
305byte-array-literals = { path = "crates/wasi-preview1-component-adapter/byte-array-literals" }
306pulley-interpreter-fuzz = { path = 'pulley/fuzz' }
307component-async-tests = { path = "crates/misc/component-async-tests" }
308
309# Bytecode Alliance maintained dependencies:
310# ---------------------------
311regalloc2 = "0.12.2"
312
313# cap-std family:
314target-lexicon = "0.13.0"
315cap-std = "3.4.4"
316cap-rand = { version = "3.4.4", features = ["small_rng"] }
317cap-fs-ext = "3.4.4"
318cap-net-ext = "3.4.4"
319cap-time-ext = "3.4.4"
320cap-tempfile = "3.4.4"
321fs-set-times = "0.20.1"
322system-interface = { version = "0.27.1", features = ["cap_std_impls"] }
323io-lifetimes = { version = "2.0.3", default-features = false }
324io-extras = "0.18.1"
325rustix = "1.0.3"
326# wit-bindgen:
327wit-bindgen = { version = "0.43.0", default-features = false }
328wit-bindgen-rt = { version = "0.43.0", default-features = false }
329wit-bindgen-rust-macro = { version = "0.43.0", default-features = false }
330
331# wasm-tools family:
332wasmparser = { version = "0.236.0", default-features = false, features = ['simd'] }
333wat = "1.236.0"
334wast = "236.0.0"
335wasmprinter = "0.236.0"
336wasm-encoder = "0.236.0"
337wasm-smith = "0.236.0"
338wasm-mutate = "0.236.0"
339wit-parser = "0.236.0"
340wit-component = "0.236.0"
341wasm-wave = "0.236.0"
342wasm-compose = "0.236.0"
343json-from-wast = "0.236.0"
344
345# Non-Bytecode Alliance maintained dependencies:
346# --------------------------
347arbitrary = "1.4.0"
348mutatis = "0.3.2"
349cc = "1.0"
350object = { version = "0.37.3", default-features = false, features = ['read_core', 'elf'] }
351gimli = { version = "0.32.0", default-features = false, features = ['read'] }
352addr2line = { version = "0.25.0", default-features = false }
353anyhow = { version = "1.0.93", default-features = false }
354windows-sys = "0.60.0"
355env_logger = "0.11.5"
356log = { version = "0.4.27", default-features = false }
357clap = { version = "4.5.17", default-features = false, features = ["std", "derive"] }
358clap_complete = "4.4.7"
359hashbrown = { version = "0.15", default-features = false }
360capstone = "0.13.0"
361smallvec = { version = "1.6.1", features = ["union"] }
362tracing = "0.1.26"
363bitflags = "2.0"
364thiserror = "2.0.12"
365async-trait = "0.1.71"
366heck = "0.5"
367similar = "2.1.0"
368toml = "0.8.10"
369mach2 = "0.4.2"
370memfd = "0.6.2"
371psm = "0.1.11"
372proptest = "1.0.0"
373rand = { version = "0.9.2", features = ["small_rng"] }
374# serde and serde_derive must have the same version
375serde = { version = "1.0.215", default-features = false, features = ['alloc'] }
376serde_derive = "1.0.188"
377serde_json = "1.0.80"
378glob = "0.3.0"
379libfuzzer-sys = "0.4.8"
380walkdir = "2.3.3"
381cfg-if = "1.0"
382tempfile = "3.1.0"
383filecheck = "0.5.0"
384libc = { version = "0.2.112", default-features = true }
385file-per-thread-logger = "0.2.0"
386tokio = { version = "1.43.0", features = [ "rt", "time" ] }
387hyper = "1.0.1"
388http = "1.0.0"
389http-body = "1.0.0"
390http-body-util = "0.1.0"
391bytes = { version = "1.4", default-features = false }
392futures = { version = "0.3.27", default-features = false }
393indexmap = { version = "2.0.0", default-features = false }
394syn = "2.0.25"
395quote = "1.0"
396proc-macro2 = "1.0"
397test-log = { version = "0.2", default-features = false, features = ["trace"] }
398tracing-subscriber = { version = "0.3.1", default-features = false, features = ['fmt', 'env-filter', 'ansi', 'tracing-log'] }
399url = "2.3.1"
400postcard = { version = "1.0.8", default-features = false, features = ['alloc'] }
401criterion = { version = "0.6.0", default-features = false, features = ["html_reports", "rayon"] }
402rustc-hash = "2.0.0"
403libtest-mimic = "0.8.1"
404semver = { version = "1.0.17", default-features = false }
405ittapi = "0.4.0"
406libm = "0.2.7"
407tokio-rustls = "0.25.0"
408rustls = "0.22.0"
409tokio-native-tls = "0.3.1"
410native-tls = "0.2.11"
411webpki-roots = "0.26.0"
412itertools = "0.14.0"
413base64 = "0.22.1"
414termcolor = "1.4.1"
415flate2 = "1.0.30"
416
417# =============================================================================
418#
419# Features for the Wasmtime CLI executable
420#
421#
422# Note that many of these features are inherited from Wasmtime itself or
423# otherwise configure the `wasmtime` crate's execution. Features are provided as
424# compile-time switches to disable functionality primarily if one is interested
425# in configuring binary size and or exploring the binary size implications of
426# various features. Most features are enabled by default but most embeddings
427# likely won't need all features.
428#
429# When adding or removing a feature, make sure to keep the C API in sync by
430# modifying locations marked WASMTIME_FEATURE_LIST
431[features]
432default = [
433  # All subcommands are included by default.
434  "run",
435  "compile",
436  "explore",
437  "serve",
438  "wast",
439  "config",
440  "completion",
441  "objdump",
442
443  # On-by-default WASI features
444  "wasi-nn",
445  "wasi-threads",
446  "wasi-http",
447  "wasi-config",
448  "wasi-keyvalue",
449  "wasi-tls",
450
451  # Most features of Wasmtime are enabled by default.
452  "wat",
453  "parallel-compilation",
454  "pooling-allocator",
455  "cache",
456  "logging",
457  "demangle",
458  "cranelift",
459  "profiling",
460  "coredump",
461  "addr2line",
462  "debug-builtins",
463  "component-model",
464  "threads",
465  "gc",
466  "gc-drc",
467  "gc-null",
468  "stack-switching",
469  "winch",
470  "pulley",
471
472  # Enable some nice features of clap by default, but they come at a binary size
473  # cost, so allow disabling this through disabling of our own `default`
474  # feature.
475  "clap/default",
476  "clap/wrap_help",
477]
478
479# ========================================
480# Off-by-default features
481#
482# These features are off-by-default but may optionally be enabled.
483all-arch = ["wasmtime/all-arch"]
484winch = ["wasmtime/winch"]
485wmemcheck = ["wasmtime/wmemcheck"]
486trace-log = ["wasmtime/trace-log"]
487memory-protection-keys = ["wasmtime-cli-flags/memory-protection-keys"]
488profile-pulley = ["wasmtime/profile-pulley"]
489component-model-async = [
490  "wasmtime-cli-flags/component-model-async",
491  "component-model",
492  "wasmtime-wasi?/p3",
493]
494
495# This feature, when enabled, will statically compile out all logging statements
496# throughout Wasmtime and its dependencies.
497disable-logging = ["log/max_level_off", "tracing/max_level_off"]
498
499# ========================================
500# On-by-default features
501#
502# These features are all included in the `default` set above and this is
503# the internal mapping for what they enable in Wasmtime itself.
504wasi-nn = ["dep:wasmtime-wasi-nn"]
505wasi-tls = ["dep:wasmtime-wasi-tls"]
506wasi-threads = ["dep:wasmtime-wasi-threads", "threads"]
507wasi-http = ["component-model", "dep:wasmtime-wasi-http", "dep:tokio", "dep:hyper", "wasmtime-wasi-http/default-send-request"]
508wasi-config = ["dep:wasmtime-wasi-config"]
509wasi-keyvalue = ["dep:wasmtime-wasi-keyvalue"]
510pooling-allocator = ["wasmtime/pooling-allocator", "wasmtime-cli-flags/pooling-allocator"]
511component-model = [
512  "wasmtime/component-model",
513  "wasmtime-wast?/component-model",
514  "wasmtime-cli-flags/component-model"
515]
516wat = ["dep:wat", "wasmtime/wat"]
517cache = ["dep:wasmtime-cache", "wasmtime-cli-flags/cache"]
518parallel-compilation = ["wasmtime-cli-flags/parallel-compilation"]
519logging = ["wasmtime-cli-flags/logging"]
520demangle = ["wasmtime/demangle"]
521cranelift = ["wasmtime-cli-flags/cranelift", "dep:wasmtime-cranelift"]
522profiling = ["wasmtime/profiling", "wasmtime/call-hook"]
523coredump = ["wasmtime-cli-flags/coredump"]
524addr2line = ["wasmtime/addr2line"]
525debug-builtins = ["wasmtime/debug-builtins"]
526threads = ["wasmtime-cli-flags/threads"]
527gc = ["wasmtime-cli-flags/gc", "wasmtime/gc"]
528gc-drc = ["gc", "wasmtime/gc-drc", "wasmtime-cli-flags/gc-drc"]
529gc-null = ["gc", "wasmtime/gc-null", "wasmtime-cli-flags/gc-null"]
530pulley = ["wasmtime-cli-flags/pulley"]
531stack-switching = ["wasmtime/stack-switching", "wasmtime-cli-flags/stack-switching"]
532
533# CLI subcommands for the `wasmtime` executable. See `wasmtime $cmd --help`
534# for more information on each subcommand.
535serve = [
536  "wasi-http",
537  "component-model",
538  "dep:http-body-util",
539  "dep:http",
540  "wasmtime-cli-flags/async",
541]
542explore = ["dep:wasmtime-explorer", "dep:tempfile"]
543wast = ["dep:wasmtime-wast"]
544config = ["cache"]
545compile = ["cranelift"]
546run = [
547  "dep:wasmtime-wasi",
548  "wasmtime/runtime",
549  "wasmtime/wave",
550  "dep:listenfd",
551  "dep:wasi-common",
552  "dep:tokio",
553  "wasmtime-cli-flags/async",
554]
555completion = ["dep:clap_complete"]
556objdump = [
557  'dep:object',
558  'dep:cranelift-codegen',
559  'dep:capstone',
560  'dep:termcolor',
561  'dep:gimli',
562  'pulley-interpreter/disas',
563]
564
565[[test]]
566name = "disas"
567harness = false
568
569[[test]]
570name = "wast"
571harness = false
572
573[[example]]
574name = "tokio"
575required-features = ["wasi-common/tokio"]
576
577[[bench]]
578name = "instantiation"
579harness = false
580
581[[bench]]
582name = "thread_eager_init"
583harness = false
584
585[[bench]]
586name = "trap"
587harness = false
588
589[[bench]]
590name = "call"
591harness = false
592
593[[bench]]
594name = "wasi"
595harness = false
596
597[profile.release.package.wasi-preview1-component-adapter]
598opt-level = 's'
599strip = 'debuginfo'
600
601[profile.dev.package.wasi-preview1-component-adapter]
602# Make dev look like a release build since this adapter module won't work with
603# a debug build that uses data segments and such.
604incremental = false
605opt-level = 's'
606# Omit assertions, which include failure messages which require string
607# initializers.
608debug-assertions = false
609# Omit integer overflow checks, which include failure messages which require
610# string initializers.
611overflow-checks = false
612
613# Same as `wasi-preview1-component-adapter` above
614[profile.dev.package.wit-bindgen]
615incremental = false
616debug-assertions = false
617overflow-checks = false
618opt-level = 's'
619
620[profile.profiling]
621inherits = "bench"
622debug = "line-tables-only"
623
624[profile.fastest-runtime]
625inherits = "release"
626codegen-units = 1
627lto = true
628