Published in Volume XVIII, 2008, pages 63-98

Authors: M. Dezani-Ciancaglini, P. Giannini and O. Nierstrasz


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?

Full Text (PDF)


[1] Martın Abadi and Luca Cardelli. A Theory of Objects. Springer-Verlag, 1996.

[2] Martın Abadi, Luca Cardelli, Pierre-Louis Curien, and Jean-Jacques Levy. Explicit substitutions. Journal of Functional Programming, 1(4):375-416, 1991.

[3] Franz Achermann and Oscar Nierstrasz. A calculus for reasoning about software components. Theoretical Computer Science, 331(2-3):367-396, 2005.

[4] Davide Ancona, Sonia Fagorzi, and Elena Zucca. A parametric calculus for mobile open code. Electron. Notes Theor. Comput. Sci., 192(3):3- 22, 2008.

[5] Christopher Anderson and Paola Giannini. Type checking for JavaScript. In WOOD’05, volume 138 of ENTCS, pages 37-58. Elsevier, 2005.

[6] Christopher Anderson, Paola Giannini, and Sophia Drossopoulou. Towards type inference for Javascript. In ECOOP’05, volume 3586 of LNCS, pages 428-453. Springer, 2005.

[7] Alexandre Bergel and St´ephane Ducasse. Supporting unanticipated changes with Traits and Classboxes. In NODe’05, volume 69 of LNI, pages 61-75. GI, 2005.

[8] Gavin Bierman, Michael Hicks, Peter Sewell, Gareth Stoyle, and Keith Wansbrough. Dynamic rebinding for marshalling and update, with destruct-time λ. In ICFP’03, pages 99-110. ACM, 2003.

[9] Ferruccio Damiani and Paola Giannini. Alias types for “environmentaware” computations. In WOOD’03, volume 82 of ENTCS, pages 130- 150. Elsevier, 2003.

[10] Matthew Flatt, Shriram Krishnamurthi, and Matthias Felleisen. Classes and mixins. In POPL’98, pages 171-183. ACM Press, 1998.

[11] Joseph Gil and David H. Lorenz. Environmental acquisition – a new inheritance-like abstraction mechanism. In OOPSLA’96, volume 31 of ACM SIGPLAN Notices, pages 214-231, 1996.

[12] William Harrison and Harold Ossher. Subject-oriented programming (a critique of pure objects). In OOPSLA’93, volume 28 of ACM SIGPLAN Notices, pages 411-428, 1993.

[13] Brant Hashii, Scott Malabarba, Raju Pandey, and Matt Bishop. Supporting reconfigurable security policies for mobile programs. Computer Networks, 33:77-93, 200.

[14] Robert Hirschfeld, Pascal Costanza, and Oscar Nierstrasz. Contextoriented programming. Journal of Object Technology, 7(3):125-151, 2008.

[15] Atsushi Igarashi, Benjamin C. Pierce, and Philip Wadler. Featherweight Java: a minimal core calculus for Java and GJ. ACM TOPLAS, 23(3):396-450, May 2001.

[16] Suresh Jagannathan. A Programming Language Supporting First-Class Parallel Environments. PhD thesis, M.I.T., 1989.

[17] Markus Lumpe and Jean-Guy Schneider. A form-based metamodel for software composition. Journal of Science of Computer Programming, 56(2):59-78, 2005.

[18] Robin Milner, Joachim Parrow, and David Walker. A calculus of mobile processes, part I/II. Information and Computation, 100:1-77, 1992.

[19] Iulian Neamtiu, Michael Hicks, Jeffrey S. Foster, and Polyvios Pratikakis. Contextual effects for version-consistent dynamic software updating and safe concurrent programming. In POPL’08, pages 37-50. ACM, 2008.

[20] Oscar Nierstrasz. Contractual types. Technical Report IAM-03-004, Institute of Computer Science, University of Bern, Switzerland, 2003.

[21] Oscar Nierstrasz, Alexandre Bergel, Marcus Denker, St´ephane Ducasse, Markus Gaelli, and Roel Wuyts. On the revival of dynamic languages. In Software Composition’05, volume 3628 of LNCS, pages 1-13. Springer, 2005. Invited paper.

[22] Shin-ya Nishizaki. Programmable environment calculus as theory of dynamic software evolution. In ISPSE’00, pages 221-225. IEEE Computer Society Press, 2000.

[23] Benjamin C. Pierce. Types and Programming Languages. MIT Press, 2002.

[24] David Rothlisberger, Marcus Denker, and Eric Tanter. Unanticipated ´ partial behavioral reflection: Adapting applications at runtime. Journal of Computer Languages, Systems and Structures, 34(2-3):46-65, 2008.

]25] Peter Seibel. Practical CommonLisp. Apress, 2005.

[26] Randall B. Smith and Dave Ungar. A simple and unifying approach to subjective objects. TAPOS special issue on Subjectivity in ObjectOriented Systems, 2(3):161-178, 1996.

[27] David Walker. Objects in the π-calculus. Information and Computation, 116(2):253-271, February 1995.


  title={A Calculus of Evolving Objects},
  author={M. Dezani-Ciancaglini and P. Giannini and O. Nierstrasz},
  journal={Scientific Annals of Computer Science},
  organization={``A.I. Cuza'' University, Iasi, Romania},
  publisher={``A.I. Cuza'' University Press}