wasmtime
wasmtime copied to clipboard
Turn the `wasmtime-runtime` crate into the `wasmtime::runtime::vm` module
We want to merge them together because there is no abstraction or layering or boundary between them in practice, and our architectures and designs have, at times, been constrained by this artificial crate boundary and what is visible in which crate and this has forced us to use nasty workarounds like defining traits in wasmtime-runtime that get implemented in wasmtime and used as dynamic trait objects inside wasmtime-runtime. Merging them will allow us to remove these hacks.
Label Messager: wasmtime:config
It looks like you are changing Wasmtime's configuration options. Make sure to complete this check list:
-
[ ] If you added a new
Configmethod, you wrote extensive documentation for it.Our documentation should be of the following form:
Short, simple summary sentence. More details. These details can be multiple paragraphs. There should be information about not just the method, but its parameters and results as well. Is this method fallible? If so, when can it return an error? Can this method panic? If so, when does it panic? # Example Optional example here. -
[ ] If you added a new
Configmethod, or modified an existing one, you ensured that this configuration is exercised by the fuzz targets.For example, if you expose a new strategy for allocating the next instance slot inside the pooling allocator, you should ensure that at least one of our fuzz targets exercises that new strategy.
Often, all that is required of you is to ensure that there is a knob for this configuration option in
wasmtime_fuzzing::Config(or one of its nestedstructs).Rarely, this may require authoring a new fuzz target to specifically test this configuration. See our docs on fuzzing for more details.
-
[ ] If you are enabling a configuration option by default, make sure that it has been fuzzed for at least two weeks before turning it on by default.
To modify this label's message, edit the .github/label-messager/wasmtime-config.md file.
To add new label messages or remove existing label messages, edit the
.github/label-messager.json configuration file.
The next step after this, before actually merging the crates together, is to factor out
wasmtime_runtime::{sys,mmap,mmap_vec}into its own crate, since this functionality is used directly by the CLI in one place, and I don't want to add that stuff to thewasmtimecrate's public API.
This is proving to be a bit hairier than anticipated; investigating alternatives. Shouldn't affect this PR.
How do I call wasmtime_runtime::raise_user_trap after this change?
Ah it's no longer possible to call the function after this change as it's private to the wasmtime crate. Could you detail what you were doing with the function? We can try to help out to find a workaround perhaps
Adding to what Alex said: that function was never intended to be exposed to or used by Wasmtime embedders. The wasmtime-runtime crate was an implementation detail of Wasmtime itself. Generally, to raise a trap in Wasm from a host API, you want to return an Err(..) from the host call.
Generally, to raise a trap in Wasm from a host API, you want to return an
Err(..)from the host call.
Oh, I did not realize that is possible. I fairly recently ported my code over from Wasmer, so I am not super familiar with API yet. That is indeed a nicer way of doing it...
Thanks for the quick responses!
@kaimast no problem! Feel free to pop into our Zulip or file an issue if you have any more questions.