Type-Safe Runtime Class Upgrades in Creol

  • Ingrid Chieh Yu
  • Einar Broch Johnsen
  • Olaf Owe
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 4037)


Modern applications distributed across networks such as the Internet may need to evolve without compromising application availability. Object systems are well suited for runtime update, as encapsulation clearly separates internal structure and external services. This paper considers a type-safe asynchronous mechanism for dynamic class upgrade, allowing class hierarchies to be updated in such a way that the existing objects of the upgraded class and of its subclasses gradually evolve at runtime. New external services may be introduced in classes and old services may be reprogrammed while static type checking ensures that asynchronous class updates maintain type safety. A formalization is shown in the Creol language which, addressing distributed and object-oriented systems, provides a natural framework for dynamic upgrades.


Operational Semantic Runtime System Typing Environment External Service Type Check 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


  1. 1.
    Ajmani, S., Liskov, B., Shrira, L.: Scheduling and simulation: How to upgrade distributed systems. In: Hot Topics in Op. Sys. (HotOS-IX), pp. 43–48 (2003)Google Scholar
  2. 2.
    Armstrong, J.L., Virding, S.R.: Erlang - an experimental telephony programming language. In: XIII International Switching Symposium (June 1990)Google Scholar
  3. 3.
    Bierman, G., Hicks, M., Sewell, P., Stoyle, G.: Formalizing dynamic software updating. In: Unanticipated Software Evolution (USE) (May 2003)Google Scholar
  4. 4.
    Bloom, T.: Dynamic Module Replacement in a Distributed Programming System. PhD thesis, MIT, Also available as MIT LCS Tech. Report 303 (1983)Google Scholar
  5. 5.
    Boyapati, C., et al.: Lazy modular upgrades in persistent object stores. In: OOPSLA 2003, pp. 403–417. ACM Press, New York (2003)Google Scholar
  6. 6.
    Clavel, M., et al.: Maude: Specification and programming in rewriting logic. Theoretical Computer Science 285, 187–243 (2002)MathSciNetCrossRefzbMATHGoogle Scholar
  7. 7.
    Damiani, F., Dezani-Ciancaglini, M., Giannini, P.: Re-classification and multithreading: FickleMT. In: SAC 2004, ACM Press, New York (2004)Google Scholar
  8. 8.
    Drossopoulou, S., Damiani, F., Dezani-Ciancaglini, M., Giannini, P.: More dynamic object re-classification: FickleII. ACM TOPLAS 24(2), 153–191 (2002)CrossRefzbMATHGoogle Scholar
  9. 9.
    Duggan, D.: Type-Based hot swapping of running modules. In: Intl. Conf. Functional Programming (ICFP-2001). ACM SIGPLAN, September 2001, vol. 36(10), pp. 62–73 (2001)Google Scholar
  10. 10.
    Gupta, D., Jalote, P., Barua, G.: A formal framework for on-line software version change. IEEE Trans. Software Eng. 22(2), 120–131 (1996)CrossRefGoogle Scholar
  11. 11.
    Hjálmtýsson, G., Gray, R.S.: Dynamic C++ classes: A lightweight mechanism to update code in a running program. In: Proc. USENIX Tech. Conf. (May 1998)Google Scholar
  12. 12.
    Hofmeister, C.R., Purtilo, J.M.: A framework for dynamic reconfiguration of distributed programs. Tech.Report CS-TR-3119, Univ.of Maryland (1993)Google Scholar
  13. 13.
    Johnsen, E.B., Owe, O.: A dynamic binding strategy for multiple inheritance and asynchronously communicating objects. In: de Boer, F.S., Bonsangue, M.M., Graf, S., de Roever, W.-P. (eds.) FMCO 2004. LNCS, vol. 3657, Springer, Heidelberg (2005)CrossRefGoogle Scholar
  14. 14.
    Johnsen, E.B., Owe, O., Simplot-Ryl, I.: A dynamic class construct for asynchronous concurrent objects. In: Steffen, M., Zavattaro, G. (eds.) FMOODS 2005. LNCS, vol. 3535, Springer, Heidelberg (2005)CrossRefGoogle Scholar
  15. 15.
    Johnsen, E.B., Owe, O., Yu, I.C.: Creol: A type-safe object-oriented model for distributed concurrent systems. Res.Rep.327, Ifi, Univ.of Oslo (2005)Google Scholar
  16. 16.
    Kramer, J., Magee, J.: The Evolving Philosophers Problem: Dynamic change management. IEEE Trans. on Software Engineering 16(11), 1293–1306 (1990)CrossRefGoogle Scholar
  17. 17.
    Malabarba, S., Pandey, R., Gragg, J., Barr, E., Barnes, J.F.: Runtime support for type-safe dynamic Java classes. In: Bertino, E. (ed.) ECOOP 2000. LNCS, vol. 1850, Springer, Heidelberg (2000)Google Scholar
  18. 18.
    Meseguer, J.: Conditional rewriting logic as a unified model of concurrency. Theoretical Computer Science 96, 73–155 (1992)MathSciNetCrossRefzbMATHGoogle Scholar
  19. 19.
    Orso, A., Rao, A., Harrold, M.J.: A technique for dynamic updating of Java software. In: Software Maintenance (ICSM 2002), pp. 649–658. IEEE Press, Los Alamitos (2002)Google Scholar
  20. 20.
    Pierce, B.C.: Types and Programming Languages. The MIT Press, Cambridge (2002)zbMATHGoogle Scholar
  21. 21.
    Soules, C.A.N., et al.: System support for online reconfiguration. In: Proc. USENIX Tech. Conf., pp. 141–154 (2003)Google Scholar
  22. 22.
    Stoyle, G., Hicks, M., Bierman, G., Sewell, P., Neamtiu, I.: Mutatis Mutandis: Safe and flexible dynamic software updating. In: Proc. POPL, ACM Press, New York (2005)Google Scholar

Copyright information

© IFIP International Federation for Information Processing 2006

Authors and Affiliations

  • Ingrid Chieh Yu
    • 1
  • Einar Broch Johnsen
    • 1
  • Olaf Owe
    • 1
  1. 1.Department of InformaticsUniversity of OsloOsloNorway

Personalised recommendations