Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                
skip to main content
Jul 2020 software

Artifact for "Lower Your Guards: A Compositional Pattern-Match Coverage Checker"

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-.tgz, where contains the md5sum checksum of the tarball. Also included is artifact05-image-.tgz, which contains a QEmu virtual machine image that comes with the Docker image pre-installed.


Assets

Read Me (icfp20main-p57-p-Artifact-accepted-readme.txt)
Artifact (icfp20main-p57-p-Artifact-accepted.zip)

Instructions

General Installation

Software Dependencies:

The Docker image inside artifact05-source-.tgz requires 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-.tgz requires qemu to run.

General Installation:

For specific instructions on how to build the source code in artifact05-source-.tgz and how to run the virtual machine image in artifact05-image-.tgz, refer to the Readme files in the respective tarballs.


Provenance

By and large, the code in artifact05-source-.tgz is distilled from code samples from the Lower Your Guards paper, along with various small scripts used to set up Docker-related scaffolding. Some of the scripts involved when building the Dockerfile download source code from external sources:

  • 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 downloading head.hackage from https://gitlab.haskell.org/ghc/head.hackage/-/commit/30a310fd8033629e1cbb5a9696250b22db5f7045, which is a commit from head.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.


License


Comments