Using First-Class Contexts to Realize Dynamic Software Updates
Applications that need to be updated but cannot be easily restarted must be updated at run-time. The authors evaluate the reflective facilities of Smalltalk with respect to dynamic software and the state-of-the-art in this field. They conclude that while fine for debugging, the existing reflective facilities are not appropriate for dynamically updating production systems under constant load. They 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.