Files
wasmtime/Cargo.toml
Nick Fitzgerald f2e1eaa847 cranelift-filetest: Add support for Wasm-to-CLIF translation filetests (#5412)
This adds support for `.wat` tests in `cranelift-filetest`. The test runner
translates the WAT to Wasm and then uses `cranelift-wasm` to translate the Wasm
to CLIF.

These tests are always precise output tests. The test expectations can be
updated by running tests with the `CRANELIFT_TEST_BLESS=1` environment variable
set, similar to our compile precise output tests. The test's expected output is
contained in the last comment in the test file.

The tests allow for configuring the kinds of heaps used to implement Wasm linear
memory via TOML in a `;;!` comment at the start of the test.

To get ISA and Cranelift flags parsing available in the filetests crate, I had
to move the `parse_sets_and_triple` helper from the `cranelift-tools` binary
crate to the `cranelift-reader` crate, where I think it logically
fits.

Additionally, I had to make some more bits of `cranelift-wasm`'s dummy
environment `pub` so that I could properly wrap and compose it with the
environment used for the `.wat` tests. I don't think this is a big deal, but if
we eventually want to clean this stuff up, we can probably remove the dummy
environments completely, remove `translate_module`, and fold them into these new
test environments and test runner (since Wasmtime isn't using those things
anyways).
2022-12-12 19:31:29 +00:00

242 lines
7.9 KiB
TOML

[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"
[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-wast = { workspace = true }
wasmtime-wasi = { workspace = true }
wasmtime-wasi-crypto = { workspace = true, optional = true }
wasmtime-wasi-nn = { workspace = true, optional = true }
clap = { workspace = true, features = ["color", "suggestions", "derive"] }
anyhow = { workspace = true }
target-lexicon = { workspace = true }
libc = "0.2.60"
humantime = "2.0.0"
once_cell = { workspace = true }
listenfd = "1.0.0"
wat = { workspace = true }
serde = "1.0.94"
serde_json = "1.0.26"
[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'] }
env_logger = { workspace = true }
log = { workspace = true }
filecheck = "0.5.0"
tempfile = "3.1.0"
test-programs = { path = "crates/test-programs" }
wasmtime-runtime = { workspace = true }
tokio = { version = "1.8.0", features = ["rt", "time", "macros", "rt-multi-thread"] }
wast = { workspace = true }
criterion = "0.3.4"
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 = "0.2.17"
[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/cli-flags",
"crates/environ/fuzz",
"crates/jit-icache-coherence",
"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 = "5.0.0"
authors = ["The Wasmtime Project Developers"]
edition = "2021"
[workspace.dependencies]
wasmtime = { path = "crates/wasmtime", version = "5.0.0", default-features = false }
wasmtime-cache = { path = "crates/cache", version = "=5.0.0" }
wasmtime-cli-flags = { path = "crates/cli-flags", version = "=5.0.0" }
wasmtime-cranelift = { path = "crates/cranelift", version = "=5.0.0" }
wasmtime-environ = { path = "crates/environ", version = "=5.0.0" }
wasmtime-fiber = { path = "crates/fiber", version = "=5.0.0" }
wasmtime-types = { path = "crates/types", version = "5.0.0" }
wasmtime-jit = { path = "crates/jit", version = "=5.0.0" }
wasmtime-jit-debug = { path = "crates/jit-debug", version = "=5.0.0" }
wasmtime-runtime = { path = "crates/runtime", version = "=5.0.0" }
wasmtime-wast = { path = "crates/wast", version = "=5.0.0" }
wasmtime-wasi = { path = "crates/wasi", version = "5.0.0" }
wasmtime-wasi-crypto = { path = "crates/wasi-crypto", version = "5.0.0" }
wasmtime-wasi-nn = { path = "crates/wasi-nn", version = "5.0.0" }
wasmtime-component-util = { path = "crates/component-util", version = "=5.0.0" }
wasmtime-component-macro = { path = "crates/component-macro", version = "=5.0.0" }
wasmtime-asm-macros = { path = "crates/asm-macros", version = "=5.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 = "=5.0.0", default-features = false }
wiggle-macro = { path = "crates/wiggle/macro", version = "=5.0.0" }
wiggle-generate = { path = "crates/wiggle/generate", version = "=5.0.0" }
wasi-common = { path = "crates/wasi-common", version = "=5.0.0" }
wasi-tokio = { path = "crates/wasi-common/tokio", version = "=5.0.0" }
wasi-cap-std-sync = { path = "crates/wasi-common/cap-std-sync", version = "=5.0.0" }
wasmtime-fuzzing = { path = "crates/fuzzing" }
wasmtime-jit-icache-coherence = { path = "crates/jit-icache-coherence", version = "=5.0.0" }
wasmtime-wit-bindgen = { path = "crates/wit-bindgen", version = "=5.0.0" }
cranelift-wasm = { path = "cranelift/wasm", version = "0.92.0" }
cranelift-codegen = { path = "cranelift/codegen", version = "0.92.0" }
cranelift-frontend = { path = "cranelift/frontend", version = "0.92.0" }
cranelift-entity = { path = "cranelift/entity", version = "0.92.0" }
cranelift-native = { path = "cranelift/native", version = "0.92.0" }
cranelift-module = { path = "cranelift/module", version = "0.92.0" }
cranelift-interpreter = { path = "cranelift/interpreter", version = "0.92.0" }
cranelift-reader = { path = "cranelift/reader", version = "0.92.0" }
cranelift-filetests = { path = "cranelift/filetests" }
cranelift-object = { path = "cranelift/object", version = "0.92.0" }
cranelift-jit = { path = "cranelift/jit", version = "0.92.0" }
cranelift-preopt = { path = "cranelift/preopt", version = "0.92.0" }
cranelift-fuzzgen = { path = "cranelift/fuzzgen" }
cranelift-bforest = { path = "cranelift/bforest", version = "0.92.0" }
cranelift = { path = "cranelift/umbrella", version = "0.92.0" }
winch-codegen = { path = "winch/codegen", version = "=0.3.0" }
target-lexicon = { version = "0.12.3", default-features = false, features = ["std"] }
anyhow = "1.0.22"
wasmparser = "0.95.0"
wat = "1.0.52"
wast = "50.0.0"
wasmprinter = "0.2.44"
wasm-encoder = "0.20.0"
wasm-smith = "0.11.9"
wasm-mutate = "0.2.12"
wit-parser = "0.3"
windows-sys = "0.42.0"
env_logger = "0.9"
rustix = "0.36.0"
log = { version = "0.4.8", default-features = false }
object = { version = "0.29", default-features = false, features = ['read_core', 'elf', 'std'] }
gimli = { version = "0.26.0", default-features = false, features = ['read', 'std'] }
clap = { version = "3.2.0", features = ["color", "suggestions", "derive"] }
hashbrown = "0.12"
cap-std = "1.0.0"
cap-rand = "1.0.0"
once_cell = "1.12.0"
smallvec = { version = "1.6.1", features = ["union"] }
io-lifetimes = { version = "1.0.0", default-features = false }
tracing = "0.1.26"
bitflags = "1.2"
thiserror = "1.0.15"
async-trait = "0.1.42"
heck = "0.4"
[features]
default = [
"jitdump",
"wasmtime/wat",
"wasmtime/parallel-compilation",
"vtune",
"wasi-nn",
"pooling-allocator",
]
jitdump = ["wasmtime/jitdump"]
vtune = ["wasmtime/vtune"]
wasi-crypto = ["dep:wasmtime-wasi-crypto"]
wasi-nn = ["dep:wasmtime-wasi-nn"]
pooling-allocator = ["wasmtime/pooling-allocator", "wasmtime-cli-flags/pooling-allocator"]
all-arch = ["wasmtime/all-arch"]
posix-signals-on-macos = ["wasmtime/posix-signals-on-macos"]
component-model = [
"wasmtime/component-model",
"wasmtime-wast/component-model",
"wasmtime-cli-flags/component-model"
]
# Stub feature that does nothing, for Cargo-features compatibility: the new
# backend is the default now.
experimental_x64 = []
[badges]
maintenance = { status = "actively-developed" }
[[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