A tour of Tempo: a program specializer for the C language

Specialization is an automatic approach to customizing a program with respect to configuration values. In this paper, we present a survey of Tempo, a specializer for the C language. Tempo offers specialization at both compile time and run time, and both program and data specialization. To control the specialization process, Tempo provides the program developer with a declarative language to describe specialization opportunities for a given program. The functionalities and features of Tempo have been driven by the needs of practical applications. Tempo has been successfully applied to a variety of realistic programs in areas such as operating systems and networking. We give an overview of the design of Tempo and of its use in specializing realistic applications.

[1]  Charles Consel,et al.  Harissa: A Flexible and Efficient Java Environment Mixing Bytecode and Compiled Code , 1997, COOTS.

[2]  Charles Consel,et al.  A tour of Schism: a partial evaluation system for higher-order applicative languages , 1993, PEPM '93.

[3]  Peter Sestoft,et al.  An experiment in partial evaluation: the generation of a compiler generator , 1985, SIGP.

[4]  Erik Ruf,et al.  Data specialization , 1996, PLDI '96.

[5]  David Schmidt Proceedings of the 1993 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation , 1993 .

[6]  Robert Glück,et al.  Fortran program specialization , 1995, SIGP.

[7]  Ulrik Pagh Schultz,et al.  Harissa: A Hybrid Approach to Java Execution , 1999, IEEE Softw..

[8]  Ulrik Pagh Schultz,et al.  Automatic program specialization for Java , 2000, TOPL.

[9]  Neil D. Jones,et al.  What Not to Do When Writing an Interpreter for Specialisation , 1996, Dagstuhl Seminar on Partial Evaluation.

[10]  Takashi Masuda,et al.  Efficient RMI: dynamic specialization of object serialization , 2000, Proceedings 20th IEEE International Conference on Distributed Computing Systems.

[11]  Gilles Muller,et al.  Adapting distributed applications using extensible networks , 1999, Proceedings. 19th IEEE International Conference on Distributed Computing Systems (Cat. No.99CB37003).

[12]  Myong-Soon Park,et al.  Using indexed data structures for program specialization , 2002, ASIA-PEPM '02.

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

[14]  Karoline Malmkjær,et al.  Program and Data Specialization Principles, Applications, and Self-Application , 1989 .

[15]  Le Meur,et al.  Approche déclarative à la spécialisation de programmes C , 2002 .

[16]  Olivier Danvy,et al.  For a Better Support of Static Data Flow , 1991, FPCA.

[17]  Karel De Vlaminck,et al.  Polyvariant constructor specialisation , 1995, PEPM '95.

[18]  Julia L. Lawall,et al.  Towards bridging the gap between programming languages and partial evaluation , 2002, PEPM '02.

[19]  G. G. Stokes "J." , 1890, The New Yale Book of Quotations.

[20]  Henning Makholm Specializing c - an introduction to the principles behind c-mix/f1 , 1999 .

[21]  Julia L. Lawall Faster Fourier Transforms via Automatic Program Specialization , 1998, Partial Evaluation.

[22]  Calton Pu,et al.  Fast, optimized Sun RPC using automatic program specialization , 1998, Proceedings. 18th International Conference on Distributed Computing Systems (Cat. No.98CB36183).

[23]  Gilles Muller,et al.  Scaling up partial evaluation for optimizing the Sun commercial RPC protocol , 1997, PEPM.

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

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

[26]  Eugene Volanschi Une approche automatique a la specialisation de composants systeme , 1998 .

[27]  Renaud Marlet,et al.  Combining Program and Data Specialization , 1999, High. Order Symb. Comput..

[28]  Peter Sestoft,et al.  An experiment in partial evaluation: the generation of a compiler generator , 1985, SIGP.

[29]  John P. Gallagher,et al.  Proceedings of the 1997 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation , 1991 .

[30]  Anne-Françoise Le Meur,et al.  An Environment for Building Customizable Software Components , 2002, Component Deployment.

[31]  Calton Pu,et al.  Optimistic incremental specialization: streamlining a commercial operating system , 1995, SOSP.

[32]  Charles Consel,et al.  Efficient incremental run-time specialization for free , 1999, PLDI '99.

[33]  Julia L. Lawall,et al.  Static and Dynamic Program Compilation by Interpreter Specialization , 2000, High. Order Symb. Comput..

[34]  Ulrik Pagh Schultz,et al.  Object-Oriented Software Engineering Using Partial Evaluaion , 2000 .

[35]  Laurie J. Hendren,et al.  Taming control flow: a structured approach to eliminating goto statements , 1994, Proceedings of 1994 IEEE International Conference on Computer Languages (ICCL'94).

[36]  John H. Hartman,et al.  Toba: Java for Applications - A Way Ahead of Time (WAT) Compiler , 1997, COOTS.

[37]  Anders Bondorf,et al.  Improving binding times without explicit CPS-conversion , 1992, LFP '92.

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

[39]  John Aycock,et al.  A brief history of just-in-time , 2003, CSUR.

[40]  Willy Zwaenepoel,et al.  The peregrine high‐performance RPC system , 1993, Softw. Pract. Exp..

[41]  Uwe Meyer Techniques for partial evaluation of imperative languages , 1991 .

[42]  Donald A. Smith,et al.  Toward the partial evaluation of CLP languages , 1991 .

[43]  Raj Srinivasan,et al.  XDR: External Data Representation Standard , 1995, RFC.

[44]  Olivier Danvy,et al.  Tutorial notes on partial evaluation , 1993, POPL '93.

[45]  Jacques Noyé,et al.  A Uniform Approach for Compile-Time and Run-Time Specialization , 1996, Dagstuhl Seminar on Partial Evaluation.

[46]  Peter Ørbæk,et al.  Polyvariant specialisation for higher-order, block-structured languages , 1995, PEPM '95.

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

[48]  John P. Gallagher,et al.  Tutorial on specialisation of logic programs , 1993, PEPM '93.

[49]  Anders Bondorf,et al.  Efficient Analysis for Realistic Off-Line Partial Evaluation , 1993, J. Funct. Program..

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

[51]  Ulrik Pagh Schultz,et al.  Specialization patterns , 2000, Proceedings ASE 2000. Fifteenth IEEE International Conference on Automated Software Engineering.

[52]  Steven McCanne,et al.  The BSD Packet Filter: A New Architecture for User-level Packet Capture , 1993, USENIX Winter.

[53]  Jacques Noyé,et al.  Effective Specialization of Realistic Programs via Use Sensitivity , 1997, SAS.

[54]  S. I. Feldman,et al.  A Fortran to C converter , 1990, FORF.

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

[56]  Ulrik Pagh Schultz,et al.  Towards Automatic Specialization of Java Programs , 1999, ECOOP.

[57]  Benjamin Goldberg,et al.  Partial-evaluation techniques for concurrent programs , 1997 .

[58]  Calton Pu,et al.  Threads and input/output in the synthesis kernal , 1989, SOSP '89.

[59]  Michael Burrows,et al.  Performance of Firefly RPC , 1990, ACM Trans. Comput. Syst..

[60]  Siau-Cheng Khoo,et al.  Compiling inheritance using partial evaluation , 1991 .

[61]  Calton Pu,et al.  Specialization tools and techniques for systematic optimization of system software , 2001, TOCS.

[62]  Andrew Birrell,et al.  Implementing Remote procedure calls , 1983, SOSP '83.

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

[64]  Woody Lichtenstein,et al.  The multiflow trace scheduling compiler , 1993, The Journal of Supercomputing.

[65]  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).

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

[67]  Jacques Noyé,et al.  Accurate binding-time analysis for imperative languages: flow, context, and return sensitivity , 2000, Theor. Comput. Sci..

[68]  Julia L. Lawall Implementing Circularity Using Partial Evaluation , 2001, PADO.

[69]  Neil D. Jones,et al.  Proceedings of the 1995 ACM SIGPLAN symposium on Partial evaluation and semantics-based program manipulation , 1995 .

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

[71]  Julia L. Lawall,et al.  Specialization Scenarios: A Pragmatic Approach to Declaring Program Specialization , 2004, High. Order Symb. Comput..