binaryen-0.0.5.0: README.md
# Haskell bindings for [binaryen][binaryen]

[Binaryen][binaryen] is a compiler and toolchain infrastructure library for
WebAssembly, written in C++. This package defines bindings to the [Binaryen C
API][binaryen-api].
## Versioning
Starting from `0.0.5.0`, we bundle the C++ sources of `binaryen` with this
package, so the package can be built and used as long as the C++ toolchain is
present in the build environment. The `system-binaryen` Cabal flag defaults to
`False`, but it can be manually enabled to link against the system-wide
`binaryen` library and avoid building the bundled C++ library.
| Haskell bindings version | Bundled Binaryen version |
| ------------------------ | ------------------------ |
| 0.0.5.\* | version_98 |
Older versions of this package links against the system-wide `binaryen` library,
so before building the package, please check the Binaryen version and make sure
it's no less than the minimum version listed below.
| Haskell bindings version | Minimum Binaryen version |
| ------------------------ | ------------------------ |
| 0.0.1.\* | version_91 |
| 0.0.2.\* | version_94 |
| 0.0.3.\* | version_96 |
| 0.0.4.\* | version_97 |
## How to build
A simple `stack build` or `cabal build` command should work.
For Windows `cabal` users: run the build in a msys2 mingw64 shell.
[`nix`][nix]-based build is also supported:
```shell
$ nix-shell --pure --run "cabal v2-run binaryen:test"
$ nix-shell --pure --run "cabal v2-run binaryen:test --flags=system-binaryen --extra-include-dirs=\$binaryenIncludeDir --extra-lib-dirs=\$binaryenLibDir"
```
Use the [`asterius`][cachix-asterius] Cachix bucket for reusing binary cache
built on CI.
[binaryen]: https://github.com/WebAssembly/binaryen
[binaryen-api]: https://github.com/WebAssembly/binaryen/blob/master/src/binaryen-c.h
[cachix-asterius]: https://app.cachix.org/cache/asterius
[nix]: https://nixos.org/nix