Skip to main content

A runtime system


The runtime data structures of the Standard ML of New Jersey compiler are simple yet general. As a result, code generators are easy to implement, programs execute quickly, garbage collectors are easy to implement and work efficiently, and a variety of runtime facilities can be provided with ease.

This is a preview of subscription content, access via your institution.


  1. Appel, Andrew W. Garbage collection can be faster than stack allocation.Information Processing Letters, 25(4):275–279, 1987.

    Google Scholar 

  2. Appel, Andrew W. Continuation-passing, closure-passing style. InSixteenth ACM Symp. on Principles of Programming Languages, pages 293–302, 1989.

  3. Appel, Andrew W. Simple generational garbage collection and fast allocation.Software—Practice/Experience, 1989.

  4. Appel, Andrew W. Tag bits aren't necessary.Lisp and Symbolic Computation, 1989.

  5. Appel, Andrew W., Duba, Bruce F., and MacQueen, David B. Profiling in the presence of optimization and garbage collection. Technical Report CS-TR-197-88, Princeton University Dept. Comp. Sci., Princeton, NJ, 1987.

    Google Scholar 

  6. Appel, Andrew W., Ellis, John R., and Li, Kai. Real-time concurrent collection on stock multiprocessors.SIGPLAN Notices (Proc. SIGPLAN'88 Conf. on Prog. Lang. Design and Implementation), 23(7):11–20, 1988.

    Google Scholar 

  7. Appel, Andrew W. and Jim, Trevor T. Y. Optimizing closure environment representations. Technical Report 168, Dept. of Computer Science, Princeton University, 1988.

  8. Appel, Andrew W. and MacQueen, David B. A Standard ML compiler. In Gilles Kahn, editor,Functional Programming Languages and Computer Architecture (LNCS 274), pages 301–324. Springer-Verlag, 1987.

  9. Britton, Dianne E. Heap storage management for the programming language Pascal. Master's thesis, University of Arizona, 1975.

  10. Cardelli, Luca. ML under Unix.Polymorphism, 1(3), December 1983.

  11. Cardelli, Luca. Compiling a functional language. In1984 Symp. on LISP and Functional Programming, pages 208–217, 1984.

  12. Cheney, C. J. A nonrecursive list compacting algorithm.Communications of the ACM, 13(11):677–678, 1970.

    Google Scholar 

  13. Cormack, G. V. A micro-kernel for concurrency in C.Software—Practice/Experience, 18(5):485–492, 1988.

    Google Scholar 

  14. Gordon, M. J. C., Milner, A. J. R. G., Morris, L., Newey, M. C., and Wadsworth, C. P. A metalanguage for interactive proof in LCF. InFifth ACM Symp. on Principles of Programming Languages, 1978.

  15. Griswold, Ralph E. and Griswold, Madge T.The Implementation of the Icon Programming Language. Princeton University Press, Princeton, NJ, 1986.

    Google Scholar 

  16. Hanson, David R. A portable storage management system for the Icon programming language.Software—Practice and Experience, 10:489–500, 1980.

    Google Scholar 

  17. Harper, Robert, Milner, Robin, and Tofte, Mads. The definition of Standard ML, version 2. Technical Report ECS-LFCS-88-62, Univ. of Edinburgh, 1988.

  18. Kernighan, Brian W. and Ritchie, Dennis M.The C Programming Language. Prentice-Hall, Englewood Cliffs, NJ, 1978.

    Google Scholar 

  19. Kranz, D., Kelsey, R., Rees, J., Hudak, P., Philbin, J., and Adams, N. ORBIT: An optimizing compiler for Scheme.SIGPLAN Notices (Proc. Sigplan '86 Symp. on Compiler Construction), 21(7):219–233, July 1986.

    Google Scholar 

  20. Lieberman, Henry and Hewitt, Carl. A real-time garbage collector based on the lifetimes of objects.Communications of the ACM, 23(6):419–429, 1983.

    Google Scholar 

  21. MacQueen, David. Modules for Standard ML. InProc. 1984 ACM Conf. on LISP and Functional Programming, pages 198–207, 1984.

  22. Milner, Robin. A proposal for Standard ML. InACM Symposium on LISP and Functional Programming, pages 184–197, 1984.

  23. Milner, Robin. The Standard ML core language.Polymorphism, 2(2), October 1985.

  24. Rees, J. and Clinger, W. (eds.). Revised report on the algorithmic language Scheme.SIGPLAN Notices, 21(12):37–79, 1986.

  25. Steele, Guy L. Jr. Rabbit: a compiler for Scheme. Technical Report AI-TR-474, MIT, 1978.

  26. Ungar, David. Generation scavenging: a non-disruptive high performance storage reclamation algorithm.SIGPLAN Notices (Proc. ACM SIGSOFT/SIGPLAN Software Eng. Symp. on Practical Software Development Environments), 19(5):157–167, 1984.

    Google Scholar 

Download references

Author information

Authors and Affiliations


Additional information

Supported in part by NSF Grants DCR-8603453 and CCR-880-6121

Rights and permissions

Reprints and Permissions

About this article

Cite this article

Appel, A.W. A runtime system. Lisp and Symbolic Computation 3, 343–380 (1990).

Download citation

  • Issue Date:

  • DOI:


  • Operating System
  • Artificial Intelligence
  • Data Structure
  • Code Generator
  • Runtime System