Dynamic C++ Classes---A lightweight mechanism to update code in a running program

``Dynamic C++ Classes---A lightweight mechanism to update code in a running program'' by Gilsi Hjalmtysson and Robert Gray. In USENIX Annual Technical Conf., June 1998, pp. 65-76.
Annotation: [by Steven Richman] Hjalmtysson and Gray's dynamic C++ classes represent an upgrade system similar in spirit to but simpler than Fabry's scheme. They permit updates at class granularity by providing a library with a generic template class that serves as a proxy for indirect access to dynamic classes. Dynamic linking intromits new code. Dynamic C++ classes avoid the problem of upgrade completeness and quiescence by allowing objects with old class versions to persist until they are destroyed; an upgrade applies only to new objects. Objects of different versions can coexist because the system forces dynamic classes to inherit from abstract interfaces that cannot change across versions. This constraint necessarily limits program evolution. Further, the policy of keeping objects with out of date class versions until deletion is ill-suited to applications with long-lived objects: an upgrade is not complete until all objects from the old version have been destroyed, and this may never occur. This becomes problematic if a critical bug fix must be applied to a long-lived object. Ultimately, the onus is placed on the programmer to delete and reconstruct objects that would not otherwise be updated. It is clear, then, that automatic transformation of live objects is a desirable property in an upgrade system. Hjalmtysson and Gray's method has several strengths, though; namely, it is an efficient implementation of dynamic updates in a modern programming language and uses only those features already present in the language and linking environment--no language extensions or special runtime systems are required.

BibTeX entry:

@inproceedings{hjalmtysson98dynamic,
   author = {Gilsi Hjalmtysson and Robert Gray},
   title = {Dynamic {C++} Classes---{A} lightweight mechanism to update
	code in a running program},
   booktitle = {{USENIX} Annual Technical Conf.},
   pages = {65--76},
   month = jun,
   year = {1998},
   url = {http://citeseer.ist.psu.edu/266962.html}
}

Also see software upgrades publications by date.

Sameer Ajmani