Skip to main content
Log in

UCL+P—Defining and Implementing Persistent Common Lisp

  • Published:
LISP and Symbolic Computation

Abstract

The Persistent Lisp language was defined and an implementation, UCL+P, 1 was designed and constructed. Persistent Lisp is a superset of Common Lisp which fully supports the development of programs manipulating persistent data while maintaining Lisp semantics across the storage/retrieval of values. Persistence features provided are concurrent atomic transactions, demand loading of values, and transparent load and store of persistent values.

All Common Lisp data types (with the exception of streams) can be made persistent. Nonsymbolic values are initially created as transient values on the runtime heap. When a transaction completes, transient values which are reachable from a persistent symbol become persistent. The package mechanism has been extended to add a persistence attribute to packages. When symbols are interned in a package with the persistence attribute, they become persistent, as do values reachable from them.

UCL+P was created to support these features, by making extensive low-level modifications to the UCL compiler and runtime system. A new runtime data structure, the indirection vector, was created to support the relocation of newly persistent values from the runtime heap to the persistent heap.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Similar content being viewed by others

References

  1. R. Agrawal and Gehani N. H. ODE (Object Database and Environment): The language and data model. In Proc. Int'l. Conf. on Management of Data, pages 36–45, Portland, Oregon, May-June 1989. ACM-SIGMOD.

  2. Malcom P. Atkinson and O. Peter Buneman. Types and persistence in database programming languages. ACM Computing Surveys, 19(2):105–190, June 1987.

    Google Scholar 

  3. Henri E. Bal, Jennifer G. Steiner, and Tanenbaum Andrew S. Programming languages for distributed computing systems. ACM Computing Surveys, 21(3):261–322, September 1989.

    Google Scholar 

  4. Gilles Barbedette. LispO2: A persistent object-oriented Lisp. In F. Bancilhon, C. Delobel, and P. Kanellakkis, editors, Building an Object-Oriented Database System: The Story ofO2, chapter 10, pages 215–233. Morgan Kaufmann, 1992. Also in Proceedings of the 2nd EDBT.

  5. P. Butterworth, A. Otis, and J. Stein. The GemStone object database management system. CACM, 34(10):64–77, October 1991.

    Google Scholar 

  6. S. M. Clamen. Data persistence in programming languages: A survey. Technical report, Carnegie Mellon University, 1991. CMU-CS–91–155.

  7. W. P. Cockshott. PS-ALGOL Implementations: Applications in Persistent Object-oriented Programming. Ellis Horwood, 1990.

  8. Korth H. F. and A. Silberschatz. Database System Concepts, Second Edition. McGraw-Hill, 1991.

  9. R. P. Gabriel. Perfomance and Evaluation of Lisp Systems. MIT Press, 1985.

  10. J. Gosling, W. Joy, and G. Steele. The Java Language Specification. Addison-Wesley, 1996.

  11. A. L. Hosking, J. E. B. Moss, and C. Bliss. Design of an object faulting persistent SmallTalk. Technical report, Univerity of Massachusetts, 1990. UM-CS-1990–045.

  12. J. H. Jacobs. UCL+P—A Persistent Common Lisp. PhD thesis, University of Utah, August 1994. Available as TR: CSTD–94–006.

  13. G. Kiczales, J. des Rivières, and D. Bobrow. The Art of the Metaobject Protocol. The MIT Press, Cambridge, MA, 1991.

    Google Scholar 

  14. Charles Lamb, Gordon Landis, Jack Orenstein, and Dan Weinreb. The ObjectStore database system. Communications of the ACM, 34(10):50–63, October 1991.

    Google Scholar 

  15. Arthur H. Lee. The Persistent Object System MetaStore: Persistence via Metaprogramming. PhD thesis, University of Utah, August 1992.

  16. S. M. Nettles and Wing J. M. Persistence + undoability = transactions. In Proceedings of the Hawaii International Conference on Systems Science 25, 1992. See also tech-report CMU-CS–91–173.

  17. Object Design Incoporated. ObjectStore User's Guide for Release 2.0, 1993.

  18. A. Paepcke. PCLOS: A flexible implementation of CLOS persistence. In S. Gjessing and K. Nygaard, editors, Proceedings of the European Conference on Object-Oriented Programming. Springer-Verlag, 1988.

  19. A. Paepcke. PCLOS: A critical review. In OOPSLA '89. ACM, 1989.

  20. Joel E. Richardson, Michael J. Carey, and Daniel T. Schuh. The design of the E programming language. Technical report, University of Wisconsin, 1989. Tech Report 824.

  21. Robert A. Shaw. Empirical Analysis of A Lisp System. PhD thesis, Stanford University, February 1988.

  22. Guy L. Steele, Jr. Common Lisp: The Language, Second Edition. Digital Press, 1991.

  23. A. Straw, F. Mellender, and S. Riegel. Object management in a persistent smalltalksystem. Software Practice and Experience, 19(8):719–737, August 1989.

    Google Scholar 

  24. Mark R. Swanson. Concurrent Scheme reference. Lisp and Symbolic Computation, 5(1/2):95–104, May 1992.

    Google Scholar 

  25. Benny Yih, Mark R. Swanson, and Robert R. Kessler. Persistent immutable shared abstractions. In Jr. Robert H. Halstead and Takayasu Ito (Eds.), editors, Parallel Symbolic Computing: Languages, Systems, and Applications, number 748 in Lecture Notes in Computer Science, Berlin, November 1993. Springer-Verlag. Proceedings of the 1992 Workshop on Parallel Symbolic Computing, Cambridge, Mass.

Download references

Author information

Authors and Affiliations

Authors

Rights and permissions

Reprints and permissions

About this article

Cite this article

Jacobs, J.H., Swanson, M.R. UCL+P—Defining and Implementing Persistent Common Lisp. Higher-Order and Symbolic Computation 10, 5–38 (1997). https://doi.org/10.1023/A:1007703623144

Download citation

  • Issue Date:

  • DOI: https://doi.org/10.1023/A:1007703623144

Navigation