Revisiting the Futamura Projections: A Visual Tutorial

The advent of language implementation tools such as  PyPy and Truffle/Graal have reinvigorated and broadened interest in topics related to automatic compiler  generation and optimization.  Given this broader interest, we revisit the  Futamura Projections  using a novel diagram scheme. Through these diagrams  we emphasize the recurring patterns in the Futamura Projections while addressing their complexity and abstract nature.  We anticipate that this approach will improve the accessibility of the Futamura Projections and help foster analysis of those new tools through the lens of partial evaluation.

[1]  Anders Bondorf,et al.  Logimix: A Self-Applicable Partial Evaluator for Prolog , 1992, LOPSTR.

[2]  Yoshihiko Futamura,et al.  Partial Evaluation of Computation Process--An Approach to a Compiler-Compiler , 1999, High. Order Symb. Comput..

[3]  Mitchell Wand,et al.  Essentials of programming languages , 2008 .

[4]  Peter Sestoft,et al.  Partial evaluation and automatic program generation , 1993, Prentice Hall international series in computer science.

[5]  Carl Friedrich Bolz,et al.  Tracing the meta-level: PyPy's tracing JIT compiler , 2009, ICOOOLPS@ECOOP.

[6]  Christian Wimmer,et al.  A domain-specific language for building self-optimizing AST interpreters , 2014, GPCE.

[7]  Stéphane Ducasse,et al.  Tracing vs. partial evaluation: comparing meta-compilation approaches for self-optimizing interpreters , 2015, OOPSLA.

[8]  Anders Bondorf,et al.  Automatic Autoprojection of Recursive Equations with Global Variables and Abstract Data Types , 1991, Sci. Comput. Program..

[9]  Christian Wimmer,et al.  One VM to rule them all , 2013, Onward!.

[10]  Neil D. Jones,et al.  An introduction to partial evaluation , 1996, CSUR.

[11]  Lars Ole Andersen Partial Evaluation of C and Automatic Compiler Generation (Extended Abstract) , 1992, CC.

[12]  Andrei P. Ershov,et al.  On the Partial Computation Principle , 1977, Inf. Process. Lett..

[13]  도경구,et al.  Partial Evaluation , 1998, Lecture Notes in Computer Science.

[14]  Peter Thiemann Cogen in six lines , 1996, ICFP '96.

[15]  Robert Glück Is there a fourth Futamura projection? , 2009, PEPM '09.