EDBT 2026 Demo / reviewers in the wild / expert
Gareth Paul Stoyle
dblp:71/1609
· DBLP profile ↗
5ranked-venue papers
2as first author
0since 2021 · last 2008
—ORCID · none
Domains — the database's venue-derived domains; a paper can count in several
Software engineering, systems software and programming languages · 5 · 2 first-author
Expertise — from the expertise taxonomy: the topics of the expert's papers under the CCF categories. A weight counts papers with recency: 1 for a paper about the topic, 0.3 when the topic is its context, halved every five years.
| Software engineering, system software, and programming languages
3 papers |
Software maintenance and evolution · 49% Programming languages and type systems · 33% Program analysis · 19% | |
| Network and information security
1 paper |
Systems and software security · 100% |
Topics — the 3 heaviest of 4, each with the papers that count most for it
| Topic | Weight | Papers | Last | Evidence papers |
|---|---|---|---|---|
Software maintenance and evolution
dynamic software updating |
0.2 | 3 | 2007 | Mutatis Mutandis: Safe and predictable dynamic software updating · ACM Trans. Program. Lang. Syst. 2007 Practical dynamic software updating for C · PLDI 2006 Mutatis mutandis: safe and predictable dynamic software updating · POPL 2005 |
Programming languages and type systems
type systems |
0.1 | 2 | 2007 | Mutatis Mutandis: Safe and predictable dynamic software updating · ACM Trans. Program. Lang. Syst. 2007 Mutatis mutandis: safe and predictable dynamic software updating · POPL 2005 |
Program analysis
static analysis |
0.1 | 1 | 2007 | Mutatis Mutandis: Safe and predictable dynamic software updating · ACM Trans. Program. Lang. Syst. 2007 |
Methods — techniques the papers use, named apart from their topics
static analysis · 0.1core calculus · 0.1
| Year | Publication | Venue | Position |
|---|---|---|---|
| 2008 | Dynamic rebinding for marshalling and update, via redex-time and destruct-time reductionabstractAbstract Most programming languages adopt static binding, but for distributed programming an exclusive reliance on static binding is too restrictive: dynamic binding is required in various guises, for example, when a marshalled value is received from the network, containing identifiers that must be rebound to local resources. Typically, it is provided only by ad hoc mechanisms that lack clean semantics. In this paper, we adopt a foundational approach, developing core dynamic rebinding mechanisms as extensions to the simply typed call-by-value λ calculus. To do so, we must first explore refinements of the call-by-value reduction strategy that delay instantiation, to ensure computations make use of the most recent versions of rebound definitions. We introduce redex - time and destruct - time strategies. The latter forms the basis for a λ marsh calculus that supports dynamic rebinding of marshalled values, while remaining as far as possible statically typed. We sketch an extension of λ marsh with concurrency and communication, giving examples showing how wrappers for encapsulating untrusted code can be expressed. Finally, we show that a high-level semantics for dynamic updating can also be based on the destruct-time strategy, defining a λ update calculus with simple primitives to provide type-safe updating of running code. We show how the ideas of this simple calculus extend to more real-world, module-level dynamic updating in the style of Erlang. We thereby establish primitives and a common semantic foundation for a variety of real-world dynamic rebinding requirements. Peter Sewell, Gareth Paul Stoyle, Michael Hicks 0001, Gavin M. Bierman, Keith Wansbrough |
J. Funct. Program. | 2 |
| 2007 | Mutatis Mutandis: Safe and predictable dynamic software updatingabstractThis article presents Proteus, a core calculus that models dynamic software updating, a service for fixing bugs and adding features to a running program. Proteus permits a program's type structure to change dynamically but guarantees the updated program remains type-correct by ensuring a property we call con-freeness. We show how con-freeness can be enforced dynamically, and how it can be approximated via a novel static analysis. This analysis can be used to assess the implications of a program's structure on future updates in order to make update success more predictable. We have implemented Proteus for C, and briefly discuss our implementation which we have tested on several well-known programs. Gareth Paul Stoyle, Michael Hicks 0001, Gavin M. Bierman, Peter Sewell, Iulian Neamtiu |
ACM Trans. Program. Lang. Syst. | 1 |
| 2006 | Practical dynamic software updating for CabstractSoftware updates typically require stopping and restarting an application, but many systems cannot afford to halt service, or would prefer not to. Dynamic software updating (DSU) addresses this difficulty by permitting programs to be updated while they run. DSU is appealing compared to other approaches for on-line upgrades because it is quite general and requires no redundant hardware. The challenge is in making DSU practical: it should be flexible, and yet safe, efficient, and easy to use.In this paper, we present Ginseng, a DSU implementation for C that aims to meet this challenge. We compile programs specially so that they can be dynamically patched, and generate most of a dynamic patch automatically. Ginseng performs a series of analyses that when combined with some simple runtime support ensure that an update will not violate type-safety while guaranteeing that data is kept up-to-date. We have used Ginseng to construct and dynamically apply patches to three substantial open-source server programs---Very Secure FTP daemon, OpenSSH sshd daemon, and GNU Zebra. In total, we dynamically patched each program with three years' worth of releases. Though the programs changed substantially, the majority of updates were easy to generate. Performance experiments show that all patches could be applied in less than 5 ms, and that the overhead on application throughput due to updating support ranged from 0 to at most 32%. Iulian Neamtiu, Michael Hicks 0001, Gareth Paul Stoyle, Manuel Oriol |
PLDI | 3 |
| 2005 | Mutatis mutandis: safe and predictable dynamic software updatingabstractDynamic 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 named types and to data, allowing on-line evolution to match source-code evolution as we have observed it in practice. We ensure updates are type-safe by checking for a property we call "con-freeness" for updated types t at the point of update. This means that non-updated code will not use t concretely beyond that point (concrete usages are via explicit coercions) and thus t's representation can safely change. We show how con-freeness can be enforced dynamically for a particular program state. We additionally define a novel and efficient static updateability analysis to establish con-freeness statically, and can thus automatically infer program points at which all future (well-formed) updates will be type-safe. We have implemented our analysis for C and tested it on several well-known programs. Gareth Paul Stoyle, Michael Hicks 0001, Gavin M. Bierman, Peter Sewell, Iulian Neamtiu |
POPL | 1 |
| 2003 | Dynamic rebinding for marshalling and update, with destruct-time?abstractMost programming languages adopt static binding, but for distributed programming an exclusive reliance on static binding is too restrictive: dynamic binding is required in various guises, for example when a marshalled value is received from the network, containing identifiers that must be rebound to local resources. Typically it is provided only by ad-hoc mechanisms that lack clean semantics.In this paper we adopt a foundational approach, developing core dynamic rebinding mechanisms as extensions to simply-typed call-by-value ? -calculus. To do so we must first explore refinements of the call-by-value reduction strategy that delay instantiation, to ensure computations make use of the most recent versions of rebound definitions. We introduce redex-time and destruct-time strategies. The latter forms the basis for a ?marsh calculus that supports dynamic rebinding of marshalled values, while remaining as far as possible statically-typed. We sketch an extension of ? marsh with concurrency and communication, giving examples showing how wrappers for encapsulating untrusted code can be expressed. Finally, we show that a high-level semantics for dynamic updating can also be based on the destruct-time strategy, defining a ?marsh calculus with simple primitives to provide type-safe updating of running code. We thereby establish primitives and a common semantic foundation for a variety of real-world dynamic rebinding requirements. Gavin M. Bierman, Michael Hicks 0001, Peter Sewell, Gareth Paul Stoyle, Keith Wansbrough |
ICFP | 4 |