Enforcing high-level protocols in low-level software

The reliability of infrastructure software, such as operating systems and web servers, is often hampered by the mismanagement of resources, such as memory and network connections. The Vault programming language allows a programmer to describe resource management protocols that the compiler can statically enforce. Such a protocol can specify that operations must be performed in a certain order and that certain operations must be performed before accessing a given data object. Furthermore, Vault enforces statically that resources cannot be leaked. We validate the utility of our approach by enforcing protocols present in the interface between the Windows 2000 kernel and its device drivers.

[1]  Bjarne Stroustrup,et al.  C++ Programming Language , 1986, IEEE Softw..

[2]  Robert E. Strom,et al.  Typestate: A programming language concept for enhancing software reliability , 1986, IEEE Transactions on Software Engineering.

[3]  Mark P. Jones A Theory of Qualified Types , 1992, ESOP.

[4]  Daniel M. Yellin,et al.  Extending Typestate Checking Using Conditional Liveness Analysis , 1993, IEEE Trans. Software Eng..

[5]  Erik Barendsen,et al.  Conventional and Uniqueness Typing in Graph Rewrite Systems , 1993, FSTTCS.

[6]  Mads Tofte,et al.  Implementation of the typed call-by-value λ-calculus using a stack of regions , 1994, POPL '94.

[7]  Mark P. Jones Simplifying and improving qualified types , 1995, FPCA '95.

[8]  Greg Nelson,et al.  Wrestling with rep exposure , 1998 .

[9]  David Gay,et al.  Memory management with explicit regions , 1998, PLDI.

[10]  K. Rustan M. Leino,et al.  An Extended Static Checker for Modular-3 , 1998, CC.

[11]  David Walker,et al.  Typed memory management in a calculus of capabilities , 1999, POPL '99.

[12]  Reinhard Wilhelm,et al.  Parametric shape analysis via 3-valued logic , 1999, POPL '99.

[13]  Alexander Aiken,et al.  A theory of type qualifiers , 1999, PLDI '99.

[14]  David Walker,et al.  Alias Types , 2000, ESOP.

[15]  David Walker,et al.  Alias Types for Recursive Data Structures , 2000, Types in Compilation.

[16]  Dawson R. Engler,et al.  Checking system rules using system-specific, programmer-written compiler extensions , 2000, OSDI.

[17]  Stephen N. Freund,et al.  Type-based race detection for Java , 2000, PLDI '00.

[18]  David Walker,et al.  Typed memory management via static capabilities , 2000, TOPL.