Hemlock
January 21, 2026 ยท View on GitHub
Hemlock is a systems programming language that emphasizes reliable high performance parallel computation. Hemlock synthesizes the expressive type and module systems of ML-family languages, a unified parametric effects/mutability/type system, and the shared-nothing message-passing parallelism of Erlang.
Getting Started with Development
Hemlock is a work in progress, and is not yet self hosting (i.e. it is written in OCaml rather than Hemlock). As such, Hemlock may interest researchers and programming language developers, but it is not yet suited for any sort of production use.
Prerequisites
There are two separate methods for building the bootstrap compiler (Docker and Native). Follow prerequisites for your preferred method.
Docker Prerequisites
Install docker compose (or podman compose).
Build and run the Hemlock docker image from the root of the Hemlock repo.
docker compose build dev
docker compose run dev
See compose.yaml for documentation about customizing the dev image.
Native Prerequisites
The bootstrap compiler depends on OCaml and the Dune build system, as well as several ppx rewriters. opam is the recommended mechanism for installing and maintaining an OCaml development environment. To install the necessary dependencies into an existing opam repository, run
cd bootstrap
opam install --deps-only .
Building
To build the bootstrap hmc Hemlock compiler and invoke the test suite, run
cd bootstrap
dune build
dune runtest
or, via the docker services defined in bootstrap, run
cd bootstrap
docker compose run --build build
docker compose run --build runtest
See the Dune documentation for more details on building
and interacting with hmc via the build system.
To build the bootstrap standard library documentation, run
dune build @doc
Use a web browser to open the documentation at _build/default/_doc/_html/index.html.
License
This project is licensed under the MIT license; see the LICENSE.md file for details.