Prof. Dr. Michael Ernst

(Massachussetts Institute of Technology)

"Preventing bugs with pluggable type-checking"

Type-checking helps to detect and prevent errors. However, a programming language's built-in types are often incapable of expressing important information, such as whether a variable may be null, whether a value is intended to be side-effected, or whether a String is interned. As a result, a type-correct program can suffer from null pointer exceptions, incorrect mutations, errors in equality testing, and many other types of problems.
User-definable extensions to the type system -- pluggable types -- can detect such errors, prevent them, or verify their absence. We present the first practical pluggable type system that integrates with a practical object-oriented programming language. Our framework works for Java, but the ideas are applicable to other languages. While the framework is compatible with all versions of the language, Java 7 will contain syntactic support for it, in the form of type annotations. Our system provides benefits to two communities.
* For programmers, it improves documentation and eliminates bugs. Case studies on multiple programs of more than 200,000 lines demonstrate these benefits.
* For type system designers, it makes it easy to implement and deploy a type system in the context of an industrial language. This enables realistic evaluation of research proposals. We illustrate this by presenting new insights about several type systems -- insights that had not been obtained through theoretical consideration or small-scale case studies.

Zeit: Montag, 24.11.2008, 17.15 Uhr
Ort: Gebäude 48, Raum 210