Accomplishments and Research Challenges in Meta-programming

In the last ten years the study of meta-programming systems, as formal systems worthy of study in their own right, has vastly accelerated. In that time a lot has been accomplished, yet much remains to be done. In this invited talk I wish to review recent accomplishments and future research challenges in hopes that this will spur interest in meta-programming in general and lead to new and better meta-programming systems.

[1]  R. Pollack The Theory of LEGO A Proof Checker for the Extended Calculus of Constructions , 1994 .

[2]  Walid Taha,et al.  Multi-stage programming with explicit annotations , 1997 .

[3]  T. Sheard,et al.  A Categorical Analysis of Multi-Level Languages (Extended Abstract) , 1998 .

[4]  Manfred Broy,et al.  Perspectives of System Informatics , 2001, Lecture Notes in Computer Science.

[5]  Martín Abadi,et al.  An Imperative Object Calculus , 1995, TAPSOFT.

[6]  Trevor Jim,et al.  Certifying Compilation and Run-Time Code Generation , 1999, High. Order Symb. Comput..

[7]  Walid Taha,et al.  Multi-Stage Programming: Axiomatization and Type Safety , 1998, ICALP.

[8]  John Launchbury,et al.  Static types for dynamic documents , 2001 .

[9]  Tim Sheard Using MetaML: A Staged Programming Language , 1998, Advanced Functional Programming.

[10]  Amr Sabry,et al.  Macros as multi-stage computations: type-safe, generative, binding macros in MacroML , 2001, ICFP '01.

[11]  Andrew M. Pitts,et al.  A new approach to abstract syntax involving binders , 1999, Proceedings. 14th Symposium on Logic in Computer Science (Cat. No. PR00158).

[12]  Annika Aasa,et al.  Precedences for conctypes , 1993, FPCA '93.

[13]  Annika Aasa,et al.  User Defined Syntax , 1992 .

[14]  Julia L. Lawall,et al.  Automatic, template-based run-time specialization: implementation and experimental study , 1998, Proceedings of the 1998 International Conference on Computer Languages (Cat. No.98CB36225).

[15]  Vivek Sarkar,et al.  Linear scan register allocation , 1999, TOPL.

[16]  Alonzo Church,et al.  A formulation of the simple theory of types , 1940, Journal of Symbolic Logic.

[17]  Markus Mock,et al.  DyC: an expressive annotation-directed dynamic compiler for C , 2000, Theor. Comput. Sci..

[18]  M. Gordon,et al.  Introduction to HOL: a theorem proving environment for higher order logic , 1993 .

[19]  Dawson R. Engler,et al.  C and tcc: a language and compiler for dynamic code generation , 1999, TOPL.

[20]  Robert G. Burger,et al.  Efficient compilation and profile-driven dynamic recompilation in scheme , 1997 .

[21]  Joseph R. Shoenfield,et al.  Mathematical logic , 1967 .

[22]  Guy L. Steele,et al.  The evolution of Lisp , 1993, HOPL-II.

[23]  Peter Lee,et al.  Dynamic specialization in the Fabius system , 1998, CSUR.

[24]  Mark P. Jones A Theory of Qualified Types , 1994, Sci. Comput. Program..

[25]  Walid Taha,et al.  Logical Modalities and Multi-Stage Programming , 1999 .

[26]  Walid Taha,et al.  Closed Types as a Simple Approach to Safe Imperative Multi-stage Programming , 2000, ICALP.

[27]  R. Kent Dybvig,et al.  An infrastructure for profile-driven dynamic recompilation , 1998, Proceedings of the 1998 International Conference on Computer Languages (Cat. No.98CB36225).

[28]  Walid Taha,et al.  MetaML and multi-stage programming with explicit annotations , 2000, Theor. Comput. Sci..

[29]  Frank Pfenning,et al.  Elf: a language for logic definition and verified metaprogramming , 1989, [1989] Proceedings. Fourth Annual Symposium on Logic in Computer Science.

[30]  Simon L. Peyton Jones,et al.  Dynamic typing as staged type inference , 1998, POPL '98.

[31]  Charles Consel,et al.  A general approach for run-time specialization and its application to C , 1996, POPL '96.

[32]  Robert Glück,et al.  Fast Binding-Time Analysis for Multi-Level Specialization , 1996, Ershov Memorial Conference.

[33]  Flemming Nielson,et al.  Correctness of Code Generation from a Two-Level Meta-Language , 1986, ESOP.

[34]  F. Pfenning Logic programming in the LF logical framework , 1991 .

[35]  Brian N. Bershad,et al.  Fast, effective dynamic compilation , 1996, PLDI '96.

[36]  Charles Consel,et al.  Tempo: specializing systems applications and beyond , 1998, CSUR.

[37]  Emir Pasalic,et al.  DSL implementation using staging and monads , 1999, DSL '99.

[38]  Peter Lee,et al.  Lightweight Run-Time Code Generation , 1994, PEPM.

[39]  R. Carnap Logical Syntax of Language , 1937 .

[40]  Markus Mock,et al.  A retrospective on: "an evaluation of staged run-time optimizations in DyC" , 2004, SIGP.

[41]  Walid Taha,et al.  Multi-Stage Programming: Its Theory and Applications , 1999 .

[42]  Alan Bawden,et al.  Quasiquotation in Lisp , 1999, PEPM.

[43]  Robert Hieb,et al.  Syntactic abstraction in scheme , 1992, LISP Symb. Comput..

[44]  Flemming Nielson,et al.  Two-Level Semantics and Abstract Interpretation , 1989, Theor. Comput. Sci..

[45]  Flemming Nielson,et al.  Two-Level Semantics and Code Generation , 1988, Theor. Comput. Sci..

[46]  Norman Ramsey Pragmatic Aspects of Reusable Program Generators , 2000, SAIG.

[47]  Andrew M. Pitts,et al.  A Metalanguage for Programming with Bound Names Modulo Renaming , 2000, MPC.

[48]  de Ng Dick Bruijn Lambda calculus notation with nameless dummies, a tool for automatic formula manipulation, with application to the Church-Rosser theorem , 1972 .

[49]  Rowan Davies,et al.  A temporal-logic approach to binding-time analysis , 1995, Proceedings 11th Annual IEEE Symposium on Logic in Computer Science.

[50]  Dale Miller,et al.  An Extension to ML to Handle Bound Variables in Data Structures: Preliminary Report , 1990 .

[51]  Walid Taha A sound reduction semantics for untyped CBN multi-stage computation. Or, the theory of MetaML is non-trivial (preliminary Report) , 1999 .

[52]  William L. Harrison,et al.  Dynamically Adaptable Software with Metacomputations in a Staged Language , 2001, SAIG.

[53]  Charles Consel,et al.  Safe and efficient active network programming , 1998, Proceedings Seventeenth IEEE Symposium on Reliable Distributed Systems (Cat. No.98CB36281).

[54]  Robert Glück,et al.  An Automatic Program Generator for Multi-Level Specialization , 1997, LISP Symb. Comput..

[55]  Willard Van Orman Quine,et al.  Mathematical logic , 1967 .

[56]  R. Kent Dybvig,et al.  From Macrogeneration to Syntactic Abstraction , 2000, High. Order Symb. Comput..

[57]  Peter Lee,et al.  Optimizing ML with run-time code generation , 1996, PLDI '96.

[58]  Flemming Nielson,et al.  Program transformations in a denotational setting , 1981, ACM Trans. Program. Lang. Syst..

[59]  Eugenio Moggi,et al.  Functor Categories and Two-Level Languages , 1998, FoSSaCS.

[60]  Martín Abadi,et al.  An Imperative Object Calculus (Invited Paper) , 1995, Theory Pract. Object Syst..

[61]  Tim Sheard,et al.  Revisiting catamorphisms over datatypes with embedded functions (or, programs from outer space) , 1996, POPL '96.

[62]  Furio Honsell,et al.  A framework for defining logics , 1993, JACM.

[63]  Lawrence C. Paulson,et al.  Isabelle: The Next 700 Theorem Provers , 2000, ArXiv.

[64]  Conal Elliott Extensions and applications of higher-order unification , 1990 .

[65]  Mark P. Jones Qualified Types: Theory and Practice , 1994 .

[66]  Christine Paulin-Mohring,et al.  The coq proof assistant reference manual , 2000 .

[67]  Walid Taha,et al.  An Idealized MetaML: Simpler, and More Expressive , 1999, ESOP.

[68]  Lennart Augustsson,et al.  Cayenne—a language with dependent types , 1998, ICFP '98.

[69]  Robert Glück,et al.  Efficient Multi-level Generating Extensions for Program Specialization , 1995, PLILP.

[70]  Walid Taha,et al.  A sound reduction semantics for untyped CBN mutli-stage computation. Or, the theory of MetaML is non-trival (extended abstract) , 1999, PEPM '00.

[71]  Henry Massalin,et al.  Synthesis: an efficient implementation of fundamental operating system services , 1992 .

[72]  Dawson R. Engler,et al.  C: a language for high-level, efficient, and machine-independent dynamic code generation , 1995, POPL '96.

[73]  Frank Pfenning,et al.  System Description: Twelf - A Meta-Logical Framework for Deductive Systems , 1999, CADE.

[74]  Murray Hill,et al.  Yacc: Yet Another Compiler-Compiler , 1978 .

[75]  Annika Aasa,et al.  Concrete syntax for data objects in functional languages , 1988, LISP and Functional Programming.

[76]  Calton Pu,et al.  The Synthesis Kernel , 1988, Comput. Syst..

[77]  John Launchbury,et al.  Implicit parameters: dynamic scoping with static types , 2000, POPL '00.