[package] authors.workspace = true description = "Fuzzing infrastructure for Wasmtime" edition.workspace = true rust-version.workspace = true name = "wasmtime-fuzzing" publish = false version = "0.0.0" license = "Apache-2.0 WITH LLVM-exception" [lints] workspace = true [build-dependencies] wasmtime-test-util = { workspace = true, features = ['wast'] } [dependencies] backtrace = { workspace = true } arbitrary = { workspace = true, features = ["derive"] } env_logger = { workspace = true } log = { workspace = true } mutatis = { workspace = true } rayon = "1.2.1" smallvec = { workspace = true } target-lexicon = { workspace = true } tempfile = "3.3.0" wasmparser = { workspace = true } wasmprinter = { workspace = true } wasmtime-wast = { workspace = true, features = ['component-model'] } wasmtime = { workspace = true, features = ['default', 'winch'] } wasmtime-core = { workspace = true, features = ['backtrace'] } wasm-encoder = { workspace = true } wasm-smith = { workspace = true, features = ['serde'] } wasm-mutate = { workspace = true } wasm-compose = { workspace = true } wasm-spec-interpreter = { path = "./wasm-spec-interpreter", optional = true } wasmi = { version = "1.0.8", default-features = false, features = ["std", "simd"] } futures = { workspace = true, features = ['async-await'] } wasmtime-test-util = { workspace = true, features = ['wast', 'component-fuzz', 'component'] } serde_json = { workspace = true } serde = { workspace = true } test-programs-artifacts = { workspace = true } wasmtime-wasi = { workspace = true } indexmap = { workspace = true } [dependencies.wasmtime-cli-flags] workspace = true features = [ 'async', 'component-model', 'component-model-async', 'cranelift', 'gc', 'gc-drc', 'gc-null', 'memory-protection-keys', 'pooling-allocator', 'pulley', 'threads', 'parallel-compilation', ] # We rely on precompiled v8 binaries, but rusty-v8 doesn't have a precompiled # binary for MinGW which is built on our CI. It does have one for Windows-msvc, # though, so we could use that if we wanted. For now though just simplify a bit # and don't depend on this on Windows. The same applies on s390x and riscv. [target.'cfg(not(any(windows, target_arch = "s390x", target_arch = "riscv64")))'.dependencies] v8 = "139.0.0" [dev-dependencies] wat = { workspace = true } rand = { version = "0.8.0", features = ["small_rng"] } wasmtime-environ = { workspace = true } cranelift-bitset = { workspace = true } # Only enable the `build-libinterpret` feature when fuzzing is enabled, enabling # commands like `cargo test --workspace` or similar to not need an ocaml # installation and only fuzzers need it by default. [target.'cfg(fuzzing)'.dependencies] wasm-spec-interpreter = { path = "./wasm-spec-interpreter", optional = true, features = ['build-libinterpret'] } [features] fuzz-spec-interpreter = ['dep:wasm-spec-interpreter'] # Fuzz proof-carrying code. Off by default. fuzz-pcc = []