Asterius is a Haskell to WebAssembly compiler based on GHC. It compiles Haskell source files or Cabal executable targets to WebAssembly+JavaScript code which can be run in Node.js or browsers. It features seamless JavaScript interop (lightweight Async FFI with Promise
support) and small output code (~600KB hello.wasm
for a Hello World). A lot of common Haskell packages like lens
are already supported. The project is actively maintained by Tweag I/O.
Demos of popular Haskell apps, running in your browser:
Quickstart using the prebuilt container imageWe host a prebuilt container image on Docker Hub. The image also ships ~2k prebuilt packages from a recent Stackage snapshot for convenience of testing simple programs without needing to set up a Cabal project.
To use the image, mount the working directory containing the source code as a shared volume, then use the ahc-link
program:
terrorjack@hostname:/project$ podman run -it --rm -v $(pwd):/workspace -w /workspace terrorjack/asterius root@hostname:/workspace#
There are a lot of link-time options available to ahc-link
, e.g. targeting the browser platform instead of node
, adding extra GHC options or setting runtime parameters. Check the documentation for further details.
It's also possible to use ahc-cabal
as a drop-in replacement of cabal
to build a Cabal project. Use ahc-dist
with --input-exe
on the output "executable" file to generate actual WebAssembly and JavaScript artifacts. See the diagrams
blog post for an example.
Check the documentation section about the prebuilt image for more information, e.g. versioning policy, how to use with podman
/docker
, etc.
asterius
locally
See the Building guide in the documentation for details.
We recommend using VSCode Remote Containers to reproduce the very same dev environment used by our core team members. See the Hacking guide in the documentation for details.
We have documentation and blog posts:
Also checkout the HIW 2018 lightning talk, and the slides of an introductory talk in 2020 here.
Note that they may be slightly out-of-date as the project evolves. Whenever you find something in the docs of blog posts which doesn't reflect the status quo, it's a bug and don't hesitate to open a ticket :)
See the roadmap section in the documentation for details.
Asterius is maintained by Tweag I/O.
Have questions? Need help? Tweet at @tweagio.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.3