* Remove unnecessary into_iter/map Forgotten from a previous refactoring, this variable was already of the right type! * Move `wasmtime_jit::Compiler` into `wasmtime` This `Compiler` struct is mostly a historical artifact at this point and wasn't necessarily pulling much weight any more. This organization also doesn't lend itself super well to compiling out `cranelift` when the `Compiler` here is used for both parallel iteration configuration settings as well as compilation. The movement into `wasmtime` is relatively small, with `Module::build_artifacts` being the main function added here which is a merging of the previous functions removed from the `wasmtime-jit` crate. * Add a `cranelift` compile-time feature to `wasmtime` This commit concludes the saga of refactoring Wasmtime and making Cranelift an optional dependency by adding a new Cargo feature to the `wasmtime` crate called `cranelift`, which is enabled by default. This feature is implemented by having a new cfg for `wasmtime` itself, `cfg(compiler)`, which is used wherever compilation is necessary. This bubbles up to disable APIs such as `Module::new`, `Func::new`, `Engine::precompile_module`, and a number of `Config` methods affecting compiler configuration. Checks are added to CI that when built in this mode Wasmtime continues to successfully build. It's hoped that although this is effectively "sprinkle `#[cfg]` until things compile" this won't be too too bad to maintain over time since it's also an use case we're interested in supporting. With `cranelift` disabled the only way to create a `Module` is with the `Module::deserialize` method, which requires some form of precompiled artifact. Two consequences of this change are: * `Module::serialize` is also disabled in this mode. The reason for this is that serialized modules contain ISA/shared flags encoded in them which were used to produce the compiled code. There's no storage for this if compilation is disabled. This could probably be re-enabled in the future if necessary, but it may not end up being all that necessary. * Deserialized modules are not checked to ensure that their ISA/shared flags are compatible with the host CPU. This is actually already the case, though, with normal modules. We'll likely want to fix this in the future using a shared implementation for both these locations. Documentation should be updated to indicate that `cranelift` can be disabled, although it's not really the most prominent documentation because this is expected to be a somewhat niche use case (albeit important, just not too common). * Always enable cranelift for the C API * Fix doc example builds * Fix check tests on GitHub Actions
122 lines
3.4 KiB
TOML
122 lines
3.4 KiB
TOML
[package]
|
|
name = "wasmtime-cli"
|
|
version = "0.29.0"
|
|
authors = ["The Wasmtime Project Developers"]
|
|
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 = "2018"
|
|
default-run = "wasmtime"
|
|
|
|
[lib]
|
|
doctest = false
|
|
|
|
[[bin]]
|
|
name = "wasmtime"
|
|
path = "src/bin/wasmtime.rs"
|
|
doc = false
|
|
|
|
[dependencies]
|
|
wasmtime = { path = "crates/wasmtime", version = "0.29.0", default-features = false, features = ['cache', 'cranelift'] }
|
|
wasmtime-cache = { path = "crates/cache", version = "0.29.0" }
|
|
wasmtime-cranelift = { path = "crates/cranelift", version = "0.29.0" }
|
|
wasmtime-environ = { path = "crates/environ", version = "0.29.0" }
|
|
wasmtime-jit = { path = "crates/jit", version = "0.29.0" }
|
|
wasmtime-wast = { path = "crates/wast", version = "0.29.0" }
|
|
wasmtime-wasi = { path = "crates/wasi", version = "0.29.0" }
|
|
wasmtime-wasi-crypto = { path = "crates/wasi-crypto", version = "0.29.0", optional = true }
|
|
wasmtime-wasi-nn = { path = "crates/wasi-nn", version = "0.29.0", optional = true }
|
|
structopt = { version = "0.3.5", features = ["color", "suggestions"] }
|
|
object = { version = "0.26.0", default-features = false, features = ["write"] }
|
|
anyhow = "1.0.19"
|
|
target-lexicon = { version = "0.12.0", default-features = false }
|
|
pretty_env_logger = "0.4.0"
|
|
file-per-thread-logger = "0.1.1"
|
|
wat = "1.0.39"
|
|
libc = "0.2.60"
|
|
log = "0.4.8"
|
|
rayon = "1.5.0"
|
|
humantime = "2.0.0"
|
|
wasmparser = "0.80.0"
|
|
lazy_static = "1.4.0"
|
|
|
|
[dev-dependencies]
|
|
env_logger = "0.8.1"
|
|
filecheck = "0.5.0"
|
|
more-asserts = "0.2.1"
|
|
tempfile = "3.1.0"
|
|
test-programs = { path = "crates/test-programs" }
|
|
wasmtime-fuzzing = { path = "crates/fuzzing" }
|
|
wasmtime-runtime = { path = "crates/runtime" }
|
|
tokio = { version = "1.8.0", features = ["rt", "time", "macros", "rt-multi-thread"] }
|
|
tracing-subscriber = "0.2.16"
|
|
wast = "37.0.0"
|
|
criterion = "0.3.4"
|
|
num_cpus = "1.13.0"
|
|
winapi = { version = "0.3.9", features = ['memoryapi'] }
|
|
|
|
[build-dependencies]
|
|
anyhow = "1.0.19"
|
|
|
|
[profile.release.build-override]
|
|
opt-level = 0
|
|
|
|
[workspace]
|
|
resolver = '2'
|
|
members = [
|
|
"cranelift",
|
|
"crates/bench-api",
|
|
"crates/c-api",
|
|
"crates/lightbeam/wasmtime",
|
|
"crates/misc/run-examples",
|
|
"examples/fib-debug/wasm",
|
|
"examples/wasi/wasm",
|
|
"examples/tokio/wasm",
|
|
"fuzz",
|
|
]
|
|
exclude = ['crates/wasi-common/WASI/tools/witx-cli']
|
|
|
|
[features]
|
|
default = ["jitdump", "wasmtime/wat", "wasmtime/parallel-compilation", "wasi-nn"]
|
|
lightbeam = ["wasmtime/lightbeam"]
|
|
jitdump = ["wasmtime/jitdump"]
|
|
vtune = ["wasmtime/vtune"]
|
|
wasi-crypto = ["wasmtime-wasi-crypto"]
|
|
wasi-nn = ["wasmtime-wasi-nn"]
|
|
uffd = ["wasmtime/uffd"]
|
|
all-arch = ["wasmtime/all-arch"]
|
|
posix-signals-on-macos = ["wasmtime/posix-signals-on-macos"]
|
|
|
|
# Stub feature that does nothing, for Cargo-features compatibility: the new
|
|
# backend is the default now.
|
|
experimental_x64 = []
|
|
|
|
# Use the old x86 backend.
|
|
old-x86-backend = ["wasmtime/old-x86-backend"]
|
|
|
|
[badges]
|
|
maintenance = { status = "actively-developed" }
|
|
|
|
[[test]]
|
|
name = "host_segfault"
|
|
harness = false
|
|
|
|
[[example]]
|
|
name = "tokio"
|
|
required-features = ["wasmtime-wasi/tokio"]
|
|
|
|
[profile.dev.package.backtrace]
|
|
debug = false # FIXME(#1813)
|
|
|
|
[[bench]]
|
|
name = "instantiation"
|
|
harness = false
|
|
|
|
[[bench]]
|
|
name = "thread_eager_init"
|
|
harness = false
|