-
Notifications
You must be signed in to change notification settings - Fork 1.4k
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Update the Wasmi fuzzing oracle to version 0.31.0
#7791
Update the Wasmi fuzzing oracle to version 0.31.0
#7791
Conversation
With respect to
All those crates are maintained by Wasmi maintainers (me). |
Subscribe to Label Actioncc @fitzgen
This issue or pull request has been labeled: "fuzzing"
Thus the following users have been cc'd because of the following labels:
To subscribe or unsubscribe from this label, edit the |
I am a bit unsure about the new |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks!
To avoid a new vet of wasmparser-nostd
would it be possible to conditionally build wasmi with the official wasmparser
crate instead? That way we could get that auto-vetted.
Wasmi I have a wishful thinking for |
Ah ok, in that case this is going to have to hold off until one of us gets a chance to vet the dependencies here. I'm stretched a bit thin at the moment so it may be a bit before I can personally get to this (but others can of course beat me to it) |
Please tell me if and how I can help with vetting. :) |
Reading over some code I think that this impl is not sound as it's supposed to be Otherwise the Currently though wasmi is only used for fuzzing so it doesn't necessarily need a thorough review or strict vetting. Do others have thoughts on whether we should add exemptions for this dependency as opposed to vetting it? |
Thanks for catching this bug! The code is quite old and hasn't seen a lot of love lately.
The unfortunate truth is that especially with the component model a lot of very
To provide you with a bit of transparency here about the state of Wasmi:
|
I just made this use Wasmi |
I'm happy with adding a cargo vet exemption for |
Agreed. |
btw. I just published a new |
Ok I've posted #7810 with new vet metadata. If you rebase this PR on top of that once it lands should be good to go |
This allows us to enable the bulk-memory, reference-types and tail-call Wasm proposals for the Wasmi fuzzing oracle.
I am not sure if this is how it is intended to be used. Please review and provide feedback.
We can do this since Wasmi supports reference-types Wasm proposal.
6667501
to
d1b570f
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Thanks for the patience while we figure out the vetting, and thanks again for helping us out with the update!
Happy to help and thanks for having Wasmi as fuzzing oracle! :) |
Currently Wasmtime uses the 2 years old Wasmi version
0.20.0
.Since then Wasmi has improved substantially and added support for new Wasm proposals such as
bulk-memory
,reference-types
andtail-calls
which we can now enable.Wasmi
v0.31.0
has recently been audited and is used by some large projects, thus is a lot more battle tested than the previousv0.20.0
.Besides that the most notable change are performance improvements which should make fuzzing with Wasmi a tiny bit faster.
Look into the future: Since roughly half a year I am working on the next major Wasmi version
v0.32.0
which is a complete rewrite of the Wasmi executor featuring a much more powerful register-machine execution model and optional lazy compilation & validation. I hope that it becomes stable enough for use soon to provide it as fuzzing oracle to Wasmtime. Due to the changes we refer to the new Wasmi version as Wasmi (register) and the old Wasmi as Wasmi (stack). It might even make sense to have both versions as oracles at the same time because they have very different strengths.