Description
The artifact accompanying the ICFP 2020 paper "Lower Your Guards: A Compositional Pattern-Match Coverage Checker". This is packaged as a Docker image that contains a patched version of the Glasgow Haskell Compiler (referred to as GHC-LYG) which implements the Lower Your Guards (LYG) algorithm for pattern-matching coverage checking. The Docker image contains runnable programs corresponding to each of the code examples in the paper along with a Readme file that describes the expected outputs. The image also describes how to reproduce other results from the paper, including the head.hackage results, the compiler performance tests, and the coverage warnings for OCaml and Idris code.
The source code for the Docker image is included in artifact05-source-
Assets
Instructions
General Installation
Software Dependencies:
The Docker image inside artifact05-source-make
and docker
to build from source. Alternatively, a pre-built version of the Docker image can be downloaded from DockerHub, which only requires docker
. Running the virtual machine image inside artifact05-image-qemu
to run.
General Installation:
For specific instructions on how to build the source code in artifact05-source-
Provenance
By and large, the code in artifact05-source-
- The Dockerfile downloads a developmental version of the Glasgow Haskell Compiler from https://gitlab.haskell.org/ghc/ghc/-/commit/59c023ba5ccb10fff62810591f20608bd73c97af, which is a commit from GHC's upstream git repo. This is used to populate the
/root/ghc
directory in the Docker image. - The
/root/perf-tests
directory is populated with test cases from GHC's regression test suite. These are populated by creating symlinks to the relevant files in/root/ghc
. - The
/root/head-hackage-eval
directory is populated by downloadinghead.hackage
from https://gitlab.haskell.org/ghc/head.hackage/-/commit/30a310fd8033629e1cbb5a9696250b22db5f7045, which is a commit fromhead.hackage
's upstream git repo. These contain source code patches for various Haskell libraries hosted on Hackage (http://hackage.haskell.org/).
Finally, note that the examples/8.8.3-inhabitation-testing.patch
file, which contains a GHC patch described in the Readme, is taken from https://gitlab.haskell.org/ghc/ghc/-/commit/744b034dc2ea5b7b82b5586a263c12f231e803f1.