Join GitHub today
GitHub is home to over 40 million developers working together to host and review code, manage projects, and build software together.Sign up
Multi value! And even more fuzzing! #124
alexcrichton left a comment
Nice! Mind running a few benchmarks to ensure that the usage of
I'm also curious, could you explain a bit more where the need for interior mutability arose?
Instead of holding a couple of `Box<[ValType]>`s for parameters and results, now they more accurately reflect the spec (and the multi-value extension of it). For simple, MVP wasm, they hold the optional return value type directly inline. For multi-value, they reference a `TypeId`. See the `NB` comment above `InstrSeqType` for details about why this split is beneficial, and we shouldn't *only* use `TypeId`.
Re-uses basically all of our existing fuzzing infrastructure, but uses libfuzzer to drive the "RNG" values that we generate Wat with. This lets us combine the benefits of coverage-guided fuzzing with our existing "structured" fuzzing.
This is not /strictly/ necessary because they are otherwise emitted in the order that they are added, which is usually the order that they are parsed. However, if one were adding types in a non-deterministic order, then we would emit types non-deterministically. Overall, this is just a nice robustness addition.