Asterius is a Haskell toolchain that compiles to WebAssembly, enabling Haskell programs to run in the browser and other Wasm hosts. It builds on GHC, lowers Haskell code to WebAssembly modules, and links them with a lightweight JavaScript runtime for I/O, GC interaction, and host integration. The toolchain provides commands to build and link (ahc/ahc-link), bundle assets, and target both browser and Node environments. Interop is a core focus: Haskell functions can call into JavaScript and vice versa, making it feasible to combine Haskell logic with web APIs. Asterius aims to keep as much of Haskell’s runtime model as practical while delivering the portability and startup characteristics of Wasm. By bridging GHC and WebAssembly, it opens a path to reuse Haskell libraries on the client side without switching languages.
Features
- Compilation from Haskell to WebAssembly (Wasm)
- Support for Haskell runtime abstractions in Wasm (e.g. memory, concurrency, IO)
- Integration with GHC and Haskell toolchains
- Generation of efficient WebAssembly modules
- Support for combining Haskell modules with Wasm host environments
- Tooling for deploy / linking / embedding of Wasm modules