Effect Handlers for WebAssembly

Community

About

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.

Resources

WasmFX is an open source project being developed in the public domain.

Submitting feedback and issues

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:

Contributing to WasmFX

We welcome external contributions to WasmFX. There are multiple ways to contribute to the project.

Design and discussions

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.

Relevant resources:

Reference interpreter implementation

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.

Relevant resources:

Wasm-tools and Wasmtime implementations

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.

Relevant resources:

Toolchains

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.

Relevant resources: