Contextual Effects for Version-Consistent Dynamic Software Updating and Safe Concurrent Programming

View/ Open
Date
2007-11-01Author
Neamtiu, Iulian
Hicks, Michael
Foster, Jeffrey S.
Pratikakis, Polyvios
Metadata
Show full item recordAbstract
This paper presents a generalization of standard effect systems that
we call contextual effects. A traditional effect system computes the effect of an expression e. Our system additionally computes the effects
of the computational context in which e occurs. More specifically, we compute the effect of the computation that has already occurred
(the prior effect) and the effect of the computation yet to take
place (the future effect).
Contextual effects are useful when the past or future computation of the
program is relevant at various program points. We present two
substantial examples. First, we show how prior and future effects can
be used to enforce transactional version consistency (TVC), a novel
correctness property for dynamic software updates. TVC ensures that
programmer-designated transactional code blocks appear to execute
entirely at the same code version, even if a dynamic update occurs in
the middle of the block. Second, we show how future effects can be used
in the analysis of multi-threaded programs to find thread-shared
locations. This is an essential step in applications such as data race
detection.