Annotation: [by Steven Richman] Hicks et al. implement a dynamic update system in a C-like imperative language. Their system allows for data transformation during an upgrade. An upgrade consists of dynamically-linked code and optional state transformer functions. An upgrade's type safety is guaranteed with a proof-carrying typed assembly language (it is unclear why the type analysis cannot be carried out at compile time). New code is attached to old code by relinking references. A tool automatically generates simple state transformer functions based on code changes, minimizing programmer work. The programmer is required to specify a single quiescent point in the application at which upgrades can safely occur, and this point cannot change across versions. An upgrade happens atomically at the specified time. The authors apply their upgrade system to a single-threaded event-driven web server that is amenable to quiescence identification, but it is not clear that update timing can be specified easily in multithreaded or more complex applications. In general, update timing is an important and difficult problem in systems that seek to upgrade running applications mid-execution.
BibTeX entry:
@inproceedings{hicks01dynamic, author = {Michael W. Hicks and Jonathan T. Moore and Scott Nettles}, title = {Dynamic Software Updating}, booktitle = {{SIGPLAN} Conf. on Programming Language Design and Implementation}, pages = {13--23}, year = {2001}, url = {http://citeseer.ist.psu.edu/article/hicks01dynamic.html} }
Sameer Ajmani