A Calculus of Evolving Objects
Published in
Volume XVIII, 2008, p. 63-98
Authors: M. Dezani-Ciancaglini, P. Giannini and O. Nierstrasz
Abstract
The demands of developing modern, highly dynamic applications
have led to an increasing interest in dynamic programming languages
and mechanisms. Not only must applications evolve over time, but
the object models themselves may need to be adapted to the requirements
of different run-time contexts. Class-based models and
prototype-based models, for example, may need to co-exist to meet the
demands of dynamically evolving applications. Multi-dimensional dispatch,
fine-grained and dynamic software composition, and run-time
evolution of behaviour are further examples of diverse mechanisms
which may need to co-exist in a dynamically evolving run-time environment.
How can we model the semantics of these highly dynamic
features, yet still offer some reasonable safety guarantees?
To this end we present an original calculus in which objects can
adapt their behaviour at run-time. Both objects and environments
are represented by first-class mappings between variables and values.
Message sends are dynamically resolved to method calls. Variables
may be dynamically bound, making it possible to model a variety
of dynamic mechanisms within the same calculus. Despite the highly
dynamic nature of the calculus, safety properties are assured by a type
assignment system.
Full text (PDF) |
BibTeX