Gradual Typing for Objects

  • Authors:
  • Jeremy Siek;Walid Taha

  • Affiliations:
  • University of Colorado, Boulder, CO 80309, USA, and LogicBlox Inc., Atlanta, GA 30309, USA;Rice University, Houston, TX 77005, USA

  • Venue:
  • ECOOP '07 Proceedings of the 21st European conference on ECOOP 2007: Object-Oriented Programming
  • Year:
  • 2007

Quantified Score

Hi-index 0.01

Visualization

Abstract

Static and dynamic type systems have well-known strengths and weaknesses. In previous work we developed a gradual type system for a functional calculus named $\lambda^?_\to$. Gradual typing provides the benefits of both static and dynamic checking in a single language by allowing the programmer to control whether a portion of the program is type checked at compile-time or run-time by adding or removing type annotations on variables. Several object-oriented scripting languages are preparing to add static checking. To support that work this paper develops $\mathbf{Ob}^{?}_{, a gradual type system for object-based languages, extending the Ob calculus of Abadi and Cardelli. Our primary contribution is to show that gradual typing and subtyping are orthogonal and can be combined in a principled fashion. We also develop a small-step semantics, provide a machine-checked proof of type safety, and improve the space efficiency of higher-order casts.