Publications

View publication

Title Foundations of Typestate-Oriented Programming
Authors Ronald Garcia, Éric Tanter, Roger Wolff, Jonathan Aldrich
Publication date October 2014
Abstract Typestate reflects how the legal operations on imperative
objects
can change at runtime as their internal state changes. A typestate checker
can statically ensure, for instance, that an object method is only called
when the object is in a state for which the operation is well defined. Prior
work has shown how modular typestate checking can be achieved thanks to
access permissions and state guarantees. However, typestate was not treated
as a primitive language concept: typestate checkers are an additional
verification layer on top of an existing language. In contrast, a
typestate-oriented programming (TSOP) language directly supports expressing
typestates. For example, in the Plaid programming language, the typestate of
an object directly corresponds to its class, and that class can change
dynamically. Plaid objects have not only typestate-dependent interfaces but
also typestate-dependent behaviors and runtime representations.
\n\n
This article lays foundations for TSOP by formalizing a nominal
object-oriented language with mutable state that integrates typestate change
and typestate checking as primitive concepts. We first describe a statically
typed language-Featherweight Typestate (FT)-where the types of object
references are augmented with access permissions and state guarantees. We
describe a novel flow-sensitive permission-based type system for FT. Because
static typestate checking is still too rigid for some applications, we then
extend this language into a gradually typed language-Gradual Featherweight
Typestate (GFT). This language extends the notion of gradual typing to
account for typestate: gradual typestate checking seamlessly combines static
and dynamic checking by automatically inserting runtime checks into
programs. The gradual type system of GFT allows programmers to write
dynamically safe code even when the static type checker can only partly
verify it.
Downloaded 7 times
Pages article 12
Volume 36
Journal name ACM Transactions on Programming Languages and Systems
Publisher ACM Press (New York, NY, USA)
PDF View PDF
Reference URL View reference page