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 semantics. Finally, Proteus's novel and efficient static updatability analysis allows a programmer to automatically prove that an update is independent of the on-line program state, and thus guarantee that it will succeed at runtime.  Proteus admits a straightforward implementation, and we sketch how it could be extended to more advanced language features including threads. 

Joint work with Gareth Stoyle (Cambridge), Gavin Bierman (MSR Cambridge), Peter Sewell (Cambridge), and Lulian Neamtiu (University of Maryland, College Park).

Wednesday, July 21, 2004
3:30 p.m.
Wean Hall 8220

Host:  Karl Crary
Appointments:  Margaret Weigand

Principles of Programming Seminars