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.
Limitations of initial implementation
These are things that won't be part of the initial implementation:
Miscellaneous TODO items
Larger outstanding work items which have arisen during review of the initial changes:
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)Limitations of initial implementation
These are things that won't be part of the initial implementation:
resume.throwinstructions (requires exception handling)Miscellaneous TODO items
Config::wasm_stack_switchingenables both exceptions + stack-switching, but it should only enablestack_switching(from Exception and control tags #10251)rustix::param::page_size(cc Duplicate page size determination inwasmtime-fiber#10803 for motivation)stack-switchingCargo features for winch/Cranelift-related crates. Keep it for runtime bits, but for compiler bits we've generally found it's not worth the overhead.stack-switchingCargo features to the c-api and various crates/locations thereDeleteMeDebugAssertions: https://github.com/bytecodealliance/wasmtime/pull/10388/files/60c9cdb707fc674857fa549a8459f8c602be0c82#r2127451083mod stack_switchingwould have a#[cfg]for stack switching on itcont.bindcannot contain gc roots (compile error), see https://github.com/bytecodealliance/wasmtime/pull/11003/files/e9fa92d1fd989a10b584124ca07acee836123b4d#r2138934542Larger outstanding work items which have arisen during review of the initial changes:
cfg(feature = "async")which is what we probably want anyways)