WasmFX is a subsidiary project of the UKRI funded project effect handler oriented programming (MR/T043830/1) between February 2021 and January 2025, which is led by Sam Lindley at The University of Edinburgh, United Kingdom.
WasmFX is an open source project being developed in the public domain.
We welcome community and developer feedback on all aspects of WasmFX, including the high-level design, binary format, developer experience, and browser implementations.
Please contribute your feedback or issues in the following forums:
We welcome external contributions to WasmFX. There are multiple ways to contribute to the project.
A useful and fairly lightweight way to contribute is by joining the discussions about stack switching in WebAssembly on the official stack switching working group.
The reference interpreter implementation of WasmFX is led by Daniel Hillerström and Andreas Rossberg. As of writing, the reference interpreter implements only the core of the typed continuations proposal, we have yet to implement the various extensions.
We are interested in Wasm engine implementations of WasmFX.
Currently, we are working on implementing WasmFX in wasm-tools and wasmtime — the former being a toolbox for manipulating Wasm modules and latter being a production-grade engine for Wasm. The implementation effort is led by Daniel Hillerström and Luna Phipps-Costin. There is a fair amount of engineering work yet to be done, as the typed continuations proposal depends on the typed function references and exception handling proposals, both of which are yet to be implemented in wasm-tools and wasmtime. The tail call proposal is a nice-to-have feature that has not yet been implemented in wasmtime. Yangtian Zi is currently leading the implementation effort on tail calls.
We are interested in toolchains to compile programs that can take advantage of the WasmFX feature set of Wasm. Currently, Daniel Hillerström and Luna Phipps-Costin are building a toolchain that compiles effect handlers programs written in Links to Wasm via Jankscripten.