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