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.
This PR implements WebAssembly Component Model resources in Wasmex, enabling WASM components to maintain their own internal state across multiple calls, essentially turning them into stateful applications running in a sandbox. This PR only implements guest resources. While host resources are possible in the Wasi component model, I would assume they are less common. We can add that later if needed.
This fundamentally changes what's possible with WebAssembly in Elixir: instead of just calling stateless functions, you're now interacting with persistent, sandboxed applications that maintain their own state, manage their own resources, and expose rich APIs through resource methods, all while maintaining WebAssembly's security guarantees.
It looks like this:
Disclaimer:
It was a quite a bit of work. Claude Code was used extensively.
I have just enabled the GH actions for now so I can see the run status on my branch. We can change that before merging.