feat: abstract away Wazero's api.ValueType and api.EncodeXX/api.DecodeXX #44
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Currently we are exposing these wazero APIs:
RuntimeConfig
ModuleConfig
api.ValueType
api.EncodeXX/api.DecodeXX
api.Memory
The idea of this PR is hide away wazero from normal usage. If the user doesn't need any advanced configuration or functionality, then they shouldn't have to know about Wazero. That's why we are abstracting away
api.EncodeXX/api.DecodeXX
andapi.ValueType
since they will be used whenever you write a host function.RuntimeConfig
andModuleConfig
are about giving the user fine grain control of the underyling configurations. We expose some of the functionality as part of the manifest as well, see this for a more detailed breakdown.And
api.Memory
is for write-through access of the underyling memory.The only thing I am a bit worried about is
RuntimeConfig.WithCloseOnContextDone
because by default wazero sets it to false, which might be very confusing. We do set it to true if the user configures a timeout though.