Using first-class contexts to realize dynamic software updates

  • Authors:
  • Erwann Wernli;David Gurtner;Oscar Nierstrasz

  • Affiliations:
  • University of Bern, Switzerland;University of Bern, Switzerland;University of Bern, Switzerland

  • Venue:
  • Proceedings of the International Workshop on Smalltalk Technologies
  • Year:
  • 2011

Quantified Score

Hi-index 0.00

Visualization

Abstract

Applications that need to be updated but cannot be easily restarted must be updated at run-time. We evaluate the reflective facilities of Smalltalk with respect to dynamic software and the state-of-the-art in this field. We conclude that while fine for debugging, the existing reflective facilities are not appropriate for dynamically updating production systems under constant load. We propose to enable dynamic updates by introducing first-class contexts as a mechanism to allow multiple versions of objects to coexist. Object states can be dynamically migrated from one context to another, and can be kept in sync with the help of bidirectional transformations. We demonstrate our approach with ActiveContext, an extension of Smalltalk with first-class contexts. ActiveContext eliminates the need for a system to be quiescent for it to be updated. ActiveContext is realized in Pinocchio, an experimental Smalltalk implementation that fully reifies the VM to enable radical extensions. We illustrate dynamic updates in ActiveContext with a typical use case, present initial benchmarks, and discuss future performance improvements.