The Universal type was essentially a builder of engines that's given a
compiler backend and creates an Engine with .engine() method. The name
was not clear.
Since there's one engine now, it doesn't make sense to initialize a
`Store` with the engine specifically. It's an extra redundant step for
the API user.
A runtime error encountered during instantiation has to be one of the kinds of errors that can occur during instantiation, out of bounds covers the cases like initializing memory or table entries that don't exist.
There's nothing wrong with 0.24 but we have a dependency on 0.23 through 'backtrace' which is used by wasmer-engine, and we'd like to only have one copy.
Update fuzz/Cargo.toml. For wasm-smith the 'master' git branch was renamed to 'main. Switch to a versioned release since it contains the fixes we need.
2250: Use rkyv for JIT Engine r=syrusakbary a=syrusakbary
Since we are going to switch serialization methods, the new one doesn’t have a slowdown if we read the data directly.
Thus, we can always operate with processed frame infos rather than creating a lazy structure that will be deserialized when needed.
Try it:
```shell
git clone https://github.com/wasmerio/wasmer.git -b universal-compiled-info
cd wasmer
make build-wasmer
./target/release/wasmer run lib/c-api/tests/assets/qjs.wasm --disable-cache -- -h
```
Co-authored-by: Syrus Akbary <me@syrusakbary.com>
Manually impl Arbitrary in equivalence jit so that we can apply the termination there. This applies it in one place whether we're in cargo fuzz run or in cargo fuzz fmt.
Ordinarily when the fuzzer fails it will use the wasmprinter to dump the plain text of the wasm as part of the failure. Also you can use `cargo fuzz fmt --features=... fuzzer_name /path/to/artifact` to dump it as text again. In the event that dumping as text fails (either crashes or fails to replicate the problem), you can use the DUMP_TEST_CASE environment variable to get the raw wasm bytes as documented in the readme.
Wrap wasm_smith::Module in our own struct that we implement Debug for. Implement debug by printing out the wasm text.
Ignore a table element out of bounds, we're correctly catching and reporting the bug.
Changes to equivalence_jit. Distinguish between running a single function that failed and a failing instantiation. Ignore most types of runtime errors, only look at successful function invocations. When comparing floats, compare the raw bits (otherwise NaN == NaN is false even when the bits are the same).