There is a newer version of the record available.

Published July 6, 2023 | Version v1
Software Open

Artifact for the paper Fast and Efficient Boolean Unification for Hindley-Milner-Style Type and Effect Systems at OOPSLA 2023

  • 1. Aarhus University
  • 2. University of Copenhagen

Description

Introduction

This artifact supports the paper Fast and Efficient Boolean Unification for Hindley-Milner-Style Type and Effect Systems.  It reproduces the main quantifiable results of the paper, in particular the performance of six of the seven proposed strategies for Boolean unification (Strategy 1 is too slow to actually function).  The artifact reproduces Figures 2-6 of the paper, as well as various other minor metrics referenced listed in the paper.

This artifact does not have any unusual system requirements, except for the ability to run Docker, requires at most 16GiB of RAM, and on most systems take at most 20-30 minutes to run all benchmarks.

Getting Started

The artifact comprises a Docker image flix-oopsla23.tar.gz.  On WIndows, we recommend using Docker within WSL.  Depending on your system, docker commands might or might not need to be prefixed with sudo. In the following we will leave off sudo, but you may have to add it yourself.

You can load the Docker image into Docker with:

$ docker load -i flix-oopsla23.tar.gz

You can then run the image with:

$ docker run -it flix-oopsla23:latest

This will put you into a shell inside a directory containing our experimental infrastructure.

Step-by-step Instructions

After entering the Docker container as mentioned above, run make to begin benchmarking.  This will take approximately 20-30 minutes depending on system speed, and produce the following files, which can be compared against the versions used in the paper:

  • data/: various intermediate data files that are processed to produce the final results.

  • data-generated.tex: various quantitative metrics reported in the paper, in LaTeX format.

  • fig/throughput.png: corresponding to Fig. 2.

  • fig/throughput-frontend.png: a variant of Fig. 2 that shows the throughput of just the compiler frontend, meaning code generation is excluded.

  • fig/histogram-all-vars.png: corresponding to Fig. 3.

  • fig/histogram-flexible-vars.png: a variant of Fig. 3 that shows a histogram of how many flexible variables occur in queries (Fig. 3 counts all variables).

  • fig/histogram-allflex-ratio.png: corresponding to Fig. 4.

  • fig/unique-rate.png: corresponding to Fig. 5.

  • fig/strategy-time.png: corresponding to Fig. 6.

The generated files can be compared with their counterparts in paperdata/, which are what we used for the paper itself.

The Docker image contains a README.md file with more documentation.

Files

Files (536.3 MB)

Name Size Download all
md5:15e0bdd5cbce7b676bc8b8be8f61daf9
536.3 MB Download