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.
Similar content being viewed by others
References
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.
Malcom P. Atkinson and O. Peter Buneman. Types and persistence in database programming languages. ACM Computing Surveys, 19(2):105–190, June 1987.
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.
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.
P. Butterworth, A. Otis, and J. Stein. The GemStone object database management system. CACM, 34(10):64–77, October 1991.
S. M. Clamen. Data persistence in programming languages: A survey. Technical report, Carnegie Mellon University, 1991. CMU-CS–91–155.
W. P. Cockshott. PS-ALGOL Implementations: Applications in Persistent Object-oriented Programming. Ellis Horwood, 1990.
Korth H. F. and A. Silberschatz. Database System Concepts, Second Edition. McGraw-Hill, 1991.
R. P. Gabriel. Perfomance and Evaluation of Lisp Systems. MIT Press, 1985.
J. Gosling, W. Joy, and G. Steele. The Java Language Specification. Addison-Wesley, 1996.
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.
J. H. Jacobs. UCL+P—A Persistent Common Lisp. PhD thesis, University of Utah, August 1994. Available as TR: CSTD–94–006.
G. Kiczales, J. des Rivières, and D. Bobrow. The Art of the Metaobject Protocol. The MIT Press, Cambridge, MA, 1991.
Charles Lamb, Gordon Landis, Jack Orenstein, and Dan Weinreb. The ObjectStore database system. Communications of the ACM, 34(10):50–63, October 1991.
Arthur H. Lee. The Persistent Object System MetaStore: Persistence via Metaprogramming. PhD thesis, University of Utah, August 1992.
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.
Object Design Incoporated. ObjectStore User's Guide for Release 2.0, 1993.
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.
A. Paepcke. PCLOS: A critical review. In OOPSLA '89. ACM, 1989.
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.
Robert A. Shaw. Empirical Analysis of A Lisp System. PhD thesis, Stanford University, February 1988.
Guy L. Steele, Jr. Common Lisp: The Language, Second Edition. Digital Press, 1991.
A. Straw, F. Mellender, and S. Riegel. Object management in a persistent smalltalksystem. Software Practice and Experience, 19(8):719–737, August 1989.
Mark R. Swanson. Concurrent Scheme reference. Lisp and Symbolic Computation, 5(1/2):95–104, May 1992.
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.
Author information
Authors and Affiliations
Rights 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
Issue Date:
DOI: https://doi.org/10.1023/A:1007703623144