Mutatis Mutandis: Safe and Predictable Dynamic Software Updating
Michael Hicks University of Maryland, College Park   Dynamic
software updates can be used to fix bugs or add features to a
running program without downtime.  Essential for some
applications and convenient for others, low-level dynamic
updating has been used for many years.  Perhaps surprisingly,
there is little high-level understanding or language support to
help programmers write dynamic updates effectively.   To bridge
this gap, we present Proteus, a core calculus for dynamic
software updating in C-like languages that is flexible, safe,
and predictable.  Proteus supports dynamic updates to functions
(even active ones), to types and to data, allowing on-line
evolution to match source-code evolution as we have observed it
in practice. All updates are provably type-safe and
representation-consistent, meaning that only one version of a
given type may exist in the program at any time. This simplifies
reasoning and avoids unintuitive copy-based sem