Persistent programming is concerned with the creation and manipulation
of data with arbitrary lifetimes. A requirement of such systems is th
at the data (including programs) must be capable of evolving and that
evolution should be within the control of the application's programmer
. This paper discusses some recent developments in persistent programm
ing that enable controlled evolution. The areas discussed are: the use
of type systems, the use of reflection and a new style of programming
, only available in persistent object systems, called hyper-programmin
g.