Abstract machines for programming language implementation

We present an extensive, annotated bibliography of the abstract machines designed for each of the main programming paradigms (imperative, object oriented, functional, logic and concurrent). We conclude that whilst a large number of efficient abstract machines have been designed for particular language implementations, relatively little work has been done to design abstract machines in a systematic fashion.

[1]  Lennart Augustsson,et al.  A compiler for lazy ML , 1984, LFP '84.

[2]  T. B. Steel A first version of UNCOL , 1961, IRE-AIEE-ACM '61 (Western).

[3]  Richard B. Kieburtz,et al.  The G-Machine: A Fast, Graph-Reduction Evaluator , 1985, FPCA.

[4]  Stephan Diehl,et al.  Semantics-directed generation of compilers and abstract machines , 1996 .

[5]  I. V. Ramakrishnan,et al.  Efficient Tabling Mechanisms for Logic Programs , 1995, ICLP.

[6]  Alfred V. Aho,et al.  The awk programming language , 1988 .

[7]  Mads Dam,et al.  Analysis and Verification of Multiple-Agent Languages , 1996, Lecture Notes in Computer Science.

[8]  Mark Lutz,et al.  Programming Python , 1996 .

[9]  Bharat Jayaraman,et al.  A Model for Combined And-Or Parallel Execution of Logic Programs , 1989, ICPP.

[10]  Guy Argo Improving the three instruction machine , 1989, FPCA.

[11]  Stephan Diehl,et al.  Transformations of evolving algebras , 1995 .

[12]  R. J. M. Hughes,et al.  Super-combinators a new implementation method for applicative languages , 1982, LFP '82.

[13]  Jim Hugunin Python and Java: The Best of Both Worlds , 1997 .

[14]  Mitchell Wand Semantics-directed machine architecture , 1982, POPL '82.

[15]  Hassan Aït-Kaci,et al.  Warren's Abstract Machine: A Tutorial Reconstruction , 1991 .

[16]  Jack J. Dongarra,et al.  Recent Enhancements To Pvm , 1995, Int. J. High Perform. Comput. Appl..

[17]  David H. D. Warren,et al.  The SRI Model for Or-Parallel Execution of Prolog: Abstract Design and Implementation Issues , 1987, SLP.

[18]  Stephan Diehl An Experiment in Abstract Machine Design , 1997, Softw. Pract. Exp..

[19]  Andrew Wendelborn,et al.  An overview of the Adl language , 1995 .

[20]  Saumya K. Debray,et al.  Proceedings of the 1990 North American conference on Logic programming , 1990 .

[21]  Seth Copen Goldstein,et al.  TAM - A Compiler Controlled Threaded Abstract Machine , 1993, J. Parallel Distributed Comput..

[22]  Joseph M. Goodman,et al.  HAM: a general-purpose hypertext abstract machine , 1987, Hypertext.

[23]  K. Gopinath Register Allocation , 2002, The Compiler Design Handbook.

[24]  C. H. Moore,et al.  FORTH: a new Way to Program a Mini Computer , 1974 .

[25]  Simon L. Peyton Jones,et al.  Formally based profiling for higher-order functional languages , 1997, TOPL.

[26]  Simon L. Peyton Jones,et al.  The Implementation of Functional Programming Languages , 1987 .

[27]  David G. Korn ksh - an extensible high level language , 1994 .

[28]  Stephan Diehl An Experiment in Abstract Machine Design , 1997 .

[29]  Reinhard Wilhelm,et al.  Parallel Implementation of Functional Languages , 1996, LOMAPS.

[30]  Peter Van Roy,et al.  Can Logic Programming Execute as Fast as Imperative Programming? , 1990 .

[31]  Christian Schulte,et al.  An Abstract Machine for Oz , 1995, PLILP.

[32]  David M. Russinoff A Verified Prolog Compiler for the Warren Abstract Machine , 1992, J. Log. Program..

[33]  William C. Frederick,et al.  A Combinatory Logic , 1995 .

[34]  Roland H. C. Yap,et al.  An abstract machine for CLP(R) , 1992, PLDI '92.

[35]  Peter Van Roy,et al.  Mobile objects in distributed Oz , 1997, TOPL.

[36]  Lennart Augustsson The Interactive Lazy ML System , 1993, J. Funct. Program..

[37]  Peter Sestoft,et al.  Analysis and efficient implementation of functional programs , 1991 .

[38]  Simon L. Peyton Jones,et al.  Implementing lazy functional languages on stock hardware: the Spineless Tagless G-machine , 1992, Journal of Functional Programming.

[39]  Evgeniy Gabrilovich,et al.  Amalia - A Unified Platform for Parsing and Generation , 1997, ArXiv.

[40]  Peter Van Roy,et al.  The Benefits of Global Dataflow Analysis for an Optimizing Prolog Compiler , 1990, NACLP.

[41]  Melvin E. Conway,et al.  Proposal for an UNCOL , 1958, CACM.

[42]  Gordon S. Blair,et al.  A convergence of parallel and distributed computing , 1997 .

[43]  John K. Ousterhout,et al.  Scripting: Higher-Level Programming for the 21st Century , 1998, Computer.

[44]  D. A. Turner,et al.  A new implementation technique for applicative languages , 1979, Softw. Pract. Exp..

[45]  Michael Hanus,et al.  Compiling Logic Programs with Equality , 1990, PLILP.

[46]  Urs Ammann On code generation in a PASCAL compiler , 1981, Pascal - The Language and its Implementation.

[47]  Ulf Nilsson Towards a Methodology for the Design of Abstract Machines for Logic Programming Languages , 1993, J. Log. Program..

[48]  Luc Moreau The PCKS-Machine: An Abstract Machine for Sound Evaluation of Parallel Functional Programs with First-Class Continuations , 1994, ESOP.

[49]  John Darlington,et al.  ALICE a multi-processor reduction machine for the parallel evaluation CF applicative languages , 1981, FPCA '81.

[50]  Jürgen Quittek,et al.  Efficient fine-grain thread migration with active threads , 1998, Proceedings of the First Merged International Parallel Processing Symposium and Symposium on Parallel and Distributed Processing.

[51]  H. R. Walters,et al.  EPIC: An Equational Language -Abstract Machine Supporting Tools- , 1996, RTA.

[52]  Rita Loogen,et al.  Graph-based Implementation of a Functional Logic Langugage , 1990, ESOP.

[53]  Steven Pemberton,et al.  Pascal Implementation: The P4 Compiler and Interpreter , 1982 .

[54]  Sriram Srinivasan,et al.  Advanced Perl Programming , 1997 .

[55]  Manuel V. Hermenegildo,et al.  An abstract machine based execution model for computer architecture design and efficient implementation of logic programs in parallel , 1986 .

[56]  Pierre-Louis Curien,et al.  An Abstract Framework for Environment Machines , 1991, Theor. Comput. Sci..

[57]  Jr. Philip J. Koopman,et al.  Stack computers: the new wave , 1989 .

[58]  Jonathan M. Nash,et al.  Abstract Machine Models for Parallel and Distributed Computing , 1996 .

[59]  Mitchell Wand From interpreter to compiler: a representational derivation , 1985, Programs as Data Objects.

[60]  Bart Demoen,et al.  Improving the register allocation in WAM by reordering unification , 1988 .

[61]  Philip Wadler,et al.  The Glasgow Haskell Compiler: a technical overview , 1993 .

[62]  John K. Ousterhout,et al.  Tcl and the Tk Toolkit , 1994 .

[63]  Peter Kacsuk Execution models of Prolog for parallel computers , 1990 .

[64]  Frank Yellin,et al.  The Java Virtual Machine Specification , 1996 .

[65]  Troy Downing,et al.  Java Virtual Machine , 1997 .

[66]  Christoph Beierle,et al.  Formal Design of an Abstract Machine for Constraint Logic Programming , 1994, IFIP Congress.

[67]  David Robson,et al.  Smalltalk-80: The Language and Its Implementation , 1983 .

[68]  Egon Börger,et al.  The WAM - Definition and Compiler Correctness , 1995, Logic Programming: Formal Methods and Practical Applications.

[69]  M. Schönfinkel Über die Bausteine der mathematischen Logik , 1924 .

[70]  Donald E. Knuth,et al.  TeX: The Program , 1986 .

[71]  P. J. Landin The Mechanical Evaluation of Expressions , 1964, Comput. J..

[72]  Khayri A. M. Ali,et al.  The Muse Or-Parallel Prolog Model and its Performance , 1990, NACLP.

[73]  Brian W. Kernighan,et al.  Timing trials, or the trials of timing: experiments with scripting and user-interface languages , 1998 .

[74]  Craig Chambers,et al.  An efficient implementation of SELF, a dynamically-typed object-oriented language based on prototypes , 1989, OOPSLA '89.

[75]  Simon L. Peyton Jones,et al.  GUM: a portable parallel implementation of Haskell , 1996, PLDI '96.

[76]  Rafael Dueire Lins,et al.  Garbage collection: algorithms for automatic dynamic memory management , 1996 .

[77]  Inmos Limited,et al.  OCCAM 2 reference manual , 1988 .

[78]  Thomas Johnsson,et al.  Parallel graph reduction with the (v , G)-machine , 1989, FPCA.

[79]  Peter Sestoft,et al.  Deriving a lazy abstract machine , 1997, Journal of Functional Programming.

[80]  Jacek Blazewicz,et al.  Scheduling in Computer and Manufacturing Systems , 1990 .

[81]  Jean-Pierre Jouannaud,et al.  Rewrite Systems , 1991, Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics.

[82]  Vaidy S. Sunderam,et al.  PVM: A Framework for Parallel Distributed Computing , 1990, Concurr. Pract. Exp..

[83]  Vipin Kumar,et al.  AND-Parallel Execution of Logic Programs on a Shared-Memory Multiprocessor , 1988, J. Log. Program..

[84]  Peter Van Roy,et al.  The Wonder Years of Sequential Prolog Implementation , 1996 .

[85]  Simon L. Peyton Jones,et al.  The Glasgow Haskell Compiler: A Retrospective , 1992, Functional Programming.

[86]  Stephan Diehl Natural Semantics-Directed Generation of Compilers and Abstract Machines , 2000, Formal Aspects of Computing.

[87]  Glenn S. Fowler A case for make , 1990, Softw. Pract. Exp..

[88]  Simon L. Peyton Jones,et al.  GRIP - A high-performance architecture for parallel graph reduction , 1987, FPCA.

[89]  Corporate Inmos Limited Transputer instruction set - a compiler writer's guide , 1988 .

[90]  Peter Van Roy,et al.  1983-1993: The Wonder Years of Sequential Prolog Implementation , 1994, J. Log. Program..

[91]  Khayri A. M. Ali,et al.  Scheduling Or-Parallelism in Muse , 1991, ICLP.

[92]  C. A. R. Hoare,et al.  Communicating sequential processes , 1978, CACM.

[93]  Thomas Johnsson Efficient compilation of lazy evaluation , 1984, SIGP.

[94]  Daniel J. Rosenkrantz,et al.  Compiler design theory , 1976 .

[95]  Srinivas Nedunuri The functional approach to programming , 2000, SOEN.

[96]  Jon Fairbairn,et al.  TIM: A simple, lazy abstract machine to execute supercombinatorics , 1987, FPCA.

[97]  Seif Haridi,et al.  Or-Parallel Prolog on Shared Memory Multiprocessors , 1989, J. Log. Program..

[98]  Michael Fisher,et al.  An abstract machine for prototyping parallel proof mechanisms , 1997 .

[99]  J. Van Leeuwen,et al.  Handbook of theoretical computer science - Part A: Algorithms and complexity; Part B: Formal models and semantics , 1990 .

[100]  Andy Mück CAMEL: An Extension of the Categorial Abstract Machine to Compile Functional/Logic Programs , 1992, PLILP.

[101]  Xavier Leroy,et al.  The ZINC experiment : an economical implementation of the ML language , 1990 .

[102]  Alec Wolman,et al.  The structure and performance of interpreters , 1996, ASPLOS VII.

[103]  P. Crégut Machines a environnement pour la reduction symbolique et l'evaluation partielle , 1991 .

[104]  Adobe Press,et al.  PostScript Language Reference Manual , 1985 .

[105]  Kazuhiro Ogata,et al.  TRAM: An Abstract Machine for Order-Sorted Conditioned Term Rewriting Systems , 1997, RTA.

[106]  H. R. Walters,et al.  ARM abstract rewriting machine , 1993 .

[107]  P. CrCgut,et al.  An abstract machine for the normalization of X-terms , 1999 .

[108]  Rita Loogen,et al.  DREAM: The DistRibuted Eden Abstract Machine , 1997, Implementation of Functional Languages.

[109]  Luca Cardelli,et al.  Compiling a functional language , 1984, LFP '84.

[110]  David Toman,et al.  Register Allocation in WAM , 1991, ICLP.

[111]  Christoph Beierle,et al.  Extending the Warren Abstract Machine to Polymorphic Order-Sorted Resolution , 1991, ISLP.

[112]  Peter J. Brown,et al.  Macroprocessors and Techniques for Portable Software , 1974 .

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

[114]  Randy Clark,et al.  Ucsd Pascal Handbook , 1982 .

[115]  M. W. Shields An Introduction to Automata Theory , 1988 .

[116]  Khayri A. M. Ali OR-Parallel Execution of Prolog on BC-Machine , 1988, ICLP/SLP.

[117]  Rafael Dueire Lins,et al.  Benchmarking implementations of functional languages with ‘Pseudoknot’, a float-intensive benchmark , 1996, Journal of Functional Programming.

[118]  Jeffrey D. Ullman,et al.  Introduction to Automata Theory, Languages and Computation , 1979 .

[119]  Harald Ganzinger,et al.  Smalltalk-80 , 1987, it Inf. Technol..

[120]  John Hannan Operational semantics-directed compilers and machine architectures , 1994, TOPL.

[121]  Krzysztof R. Apt,et al.  Logic Programming , 1990, Handbook of Theoretical Computer Science, Volume B: Formal Models and Sematics.

[122]  Mike Williams,et al.  Implementing a functional language for highly parallel real time applications , 1992 .

[123]  Luca Cardelli The Functional Abstract Machine , 1983 .

[124]  Helmut Seidl,et al.  Probabilistic load balancing for parallel graph reduction , 1989, Fourth IEEE Region 10 International Conference TENCON.

[125]  William L. Scherlis,et al.  Compilers and staging transformations , 1986, POPL '86.

[126]  Corrado Moiso,et al.  An Extension of WAM for K-LEAF: A WAM-based Compilation of Conditional Narrowing , 1989, ICLP.