1[package] 2authors.workspace = true 3description = "Fuzzing infrastructure for Wasmtime" 4edition.workspace = true 5rust-version.workspace = true 6name = "wasmtime-fuzzing" 7publish = false 8version = "0.0.0" 9license = "Apache-2.0 WITH LLVM-exception" 10 11[lints] 12workspace = true 13 14[build-dependencies] 15wasmtime-test-util = { workspace = true, features = ['wast'] } 16 17[dependencies] 18wasmtime-environ = { workspace = true } 19backtrace = { workspace = true } 20arbitrary = { workspace = true, features = ["derive"] } 21env_logger = { workspace = true } 22log = { workspace = true } 23mutatis = { workspace = true } 24rayon = "1.2.1" 25smallvec = { workspace = true } 26target-lexicon = { workspace = true } 27tempfile = "3.3.0" 28wasmparser = { workspace = true } 29wasmprinter = { workspace = true } 30wasmtime-wast = { workspace = true, features = ['component-model'] } 31wasmtime = { workspace = true, features = ['default', 'winch'] } 32wasmtime-core = { workspace = true, features = ['backtrace', 'serde'] } 33wasm-encoder = { workspace = true } 34wasm-smith = { workspace = true, features = ['serde'] } 35wasm-mutate = { workspace = true } 36wasm-compose = { workspace = true } 37wasm-spec-interpreter = { path = "./wasm-spec-interpreter", optional = true } 38wasmi = { version = "1.0.8", default-features = false, features = ["std", "simd"] } 39futures = { workspace = true, features = ['async-await'] } 40wasmtime-test-util = { workspace = true, features = ['wast', 'component-fuzz', 'component'] } 41serde_json = { workspace = true } 42serde = { workspace = true } 43test-programs-artifacts = { workspace = true } 44wasmtime-wasi = { workspace = true } 45indexmap = { workspace = true } 46 47[dependencies.wasmtime-cli-flags] 48workspace = true 49features = [ 50 'async', 51 'component-model', 52 'component-model-async', 53 'cranelift', 54 'gc', 55 'gc-drc', 56 'gc-null', 57 'memory-protection-keys', 58 'pooling-allocator', 59 'pulley', 60 'threads', 61 'parallel-compilation', 62] 63 64# We rely on precompiled v8 binaries, but rusty-v8 doesn't have a precompiled 65# binary for MinGW which is built on our CI. It does have one for Windows-msvc, 66# though, so we could use that if we wanted. For now though just simplify a bit 67# and don't depend on this on Windows. The same applies on s390x and riscv. 68[target.'cfg(not(any(windows, target_arch = "s390x", target_arch = "riscv64")))'.dependencies] 69v8 = "139.0.0" 70 71[dev-dependencies] 72wat = { workspace = true } 73rand = { version = "0.8.0", features = ["small_rng"] } 74wasmtime-environ = { workspace = true } 75cranelift-bforest = { workspace = true } 76cranelift-bitset = { workspace = true } 77tokio = { workspace = true, features = ["rt", "time", "macros", "rt-multi-thread"] } 78 79# Only enable the `build-libinterpret` feature when fuzzing is enabled, enabling 80# commands like `cargo test --workspace` or similar to not need an ocaml 81# installation and only fuzzers need it by default. 82[target.'cfg(fuzzing)'.dependencies] 83wasm-spec-interpreter = { path = "./wasm-spec-interpreter", optional = true, features = ['build-libinterpret'] } 84 85[features] 86fuzz-spec-interpreter = ['dep:wasm-spec-interpreter'] 87