Availability: Our artifact is available via Zenodo
This GitHub repository contains the artifact of our paper
Dynamic Wind for Effect Handlers
David Voigt, Philipp Schuster, Jonathan Immanuel Brachthäuser
Accepted at OOPSLA 2025.
The artifact consists of the benchmarks conducted for evaluating the potential overhead of supporting finalization clauses for effect handlers in Effekt. Furthermore, we also include a comprehensive case study leveraging finalization clauses in the context of parsing as well as the example given in section 2.
The benchmark programs are taken from a community benchmark suite, specifically designed for benchmarking effect handlers. Note that the folder benchmarks/results already contains the results of conducting the benchmarks on a Macbook equipped with a M1 Pro ARM processor and 16GB of RAM.
Additionally, this repository contains a flake.nix for setting up a reproducible shell environment with all required dependencies for building and using the Effekt compiler installed.
Besides setting up a shell environment, the flake.nix file can also be used for running the benchmarks.
- In the evaluation (section 4), we claim that supporting the newly introduced finalization clauses for effect handlers in the Effekt language is possible with little to no overhead.
- Supported: We supported our claim by presenting benchmark results comparing the execution time (using Effekt's JavaScript backend) between using our implementation and a baseline of benchmark programs (though not finalization clauses). These results can be reproduced using this artifact.
- We claim that the usage of effects in the
on resumeandon suspendclauses is safe, such that the stack unwinding and rewinding is well-behaved and no stack frames are lost.- Supported: Besides the formal proof of progress and preservation in the paper (appendix section 3 and 4, respectively), we further showcase that our implementation retains the same safety by including a comprehensive case study in the context of backtracking parsers in this artifact, giving further confidence the correctness of the implementation.
The artifact has been tested to run on x86_64 (Linux - Ubuntu 24.04) and arm64 (MacOS) architectures. For using this artifact, you approximately need 1.1 GB of disk space (excluding disk space for installing Nix) and an installation of the nix package manager.
Please find additional instructions in the following two files:
GETTING-STARTED.mdfor instructions on how to set up the environment and how to run the benchmarks as well as the case study.STEP-BY-STEP.mdfor suggestions on how to proceed with the evaluation of the artifact.REUSABILITY.mdfor instructions on how to add new benchmarks and executing user-defined Effekt programs.