This prepares for exposing operations like Memory.Grow while keeping the ability to trace what did that, by adding a `context.Context` initial parameter. This adds this to all API methods that mutate or return mutated data. Before, we made a change to trace functions and general lifecycle commands, but we missed this part. Ex. We track functions, but can't track what closed the module, changed memory or a mutable constant. Changing to do this now is not only more consistent, but helps us optimize at least the interpreter to help users identify otherwise opaque code that can cause harm. This is critical before we add more functions that can cause harm, such as Memory.Grow. Signed-off-by: Adrian Cole <adrian@tetrate.io>
wazero examples
The following example projects can help you practice WebAssembly with wazero:
- allocation - how to pass strings in and out of WebAssembly functions defined in Rust or TinyGo.
- basic - how to use both WebAssembly and Go-defined functions.
- import-go - how to define, import and call a Go-defined function from a WebAssembly-defined function.
- multiple-results - how to return more than one result from WebAssembly or Go-defined functions.
- replace-import - how to override a module name hard-coded in a WebAssembly module.
- wasi - how to use I/O in your WebAssembly modules using WASI (WebAssembly System Interface).
Please open an issue if you would like to see another example.