What makes a good compiler IR? In the context of functional languages, there has been an extensive debate on the advantages and disadvantages of continuation-passing-style (CPS). The consensus seems to be that some form of explicit continuations is necessary to model jumps in a functional style, but that they should have a 2nd-class status, separate from regular functions, to ensure efficient code generation. Building on this observation, a recent study from PLDI 2017 proposed a direct-style IR with explicit join points, which essentially represent continuations that do not return or escape. While the IR works well practically, there still seems to be room for improvements, especially with regard to the complexity of optimization steps.
In this paper, we contribute to the CPS debate by developing a novel IR with the following features. First, we integrate a control operator that behaves like Felleisen’s C, eliminating certain redundant rewrites that would occur in the previous study. Second, we treat the non-returning and non-escaping aspects of continuations separately, allowing efficient compilation of well-behaved functions defined by the user. Third, we define a selective CPS translation of our IR, which erases control operators while preserving the behavior of programs. These features enable optimizations in both direct style and full CPS, as well as in any intermediate style with selectively exposed continuations. Thus, we change the spectrum of available options from “CPS yes or no” to “as much or as little CPS as you want, when you want it”.
Mon 19 AugDisplayed time zone: Amsterdam, Berlin, Bern, Rome, Stockholm, Vienna change
10:30 - 12:00
|Rebuilding Racket on Chez Scheme (Experience Report)|
Matthew Flatt University of Utah, Caner Derici Indiana University, R. Kent Dybvig Cisco Systems, Inc, Andy Keep Cisco Systems, Inc, Gustavo E. Massaccesi Universidad de Buenos Aires, Sarah Spall Indiana University, Sam Tobin-Hochstadt Indiana University, Jon ZeppieriLink to publication DOI
|Compiling with Continuations, or without? Whatever.|
|Lambda Calculus with Algebraic Simplification for Reduction Parallelization by Equational Reasoning|
Akimasa Morihata University of Tokyo
|Fairness in Responsive Parallelism|