This paper draws on the experience gained in designing and implementing the orthogonally persistent programming languages PS-algol and Napier88. They provide, amongst other facilities and within a strongly typed environment, the underlying mechanisms for programming the evolution of persistent application systems. The essence of the paper is to suggest how such provision may be taken from these research platforms and delivered in representative commercial systems such as Java with a persistent store, and O2C.
We identify a number of language facilities which are required to support the evolution mechanism of linguistic reflection: access to meta-data; a dynamically callable compiler; an in finite union type; and a mecha- nism for incremental binding. We show how these are provided in Napier88, Java and O2, and give simple examples of their use.