Open
Description
This is a tracking issue for the in-progress implementation of the Wasm stack switching proposal. The explainer document for the proposal is here.
Progress of initial implementation
This just tracks what's happening in the sequence of PRs that's providing an initial implementation of the proposal. To get an idea of the extent of the initial implementation, see draft PR #10177.
-
Support for tags(implemented in Exception and control tags #10251) -
Type definitions for stack switching support(implemented in Continuation types #10255) - Runtime support for stack switching
- Compiling stack switching instructions to CLIF
Limitations of initial implementation
These are things that won't be part of the initial implementation:
- Support for ISAs other than x64
- Support for
resume.throw
instructions (requires exception handling) - Support for deallocating continuations
- Integration with GC (i.e., allowing continuation references to appear in GC objects, such as arrays an structs)
- Windows support
- Pulley support
- Winch support
Miscellaneous TODO items
-
Config::wasm_stack_switching
enables both exceptions + stack-switching, but it should only enablestack_switching
(from Exception and control tags #10251)