Paper on gradual typing by Éric Tánter receives recognition at the Dynamic Languages Symposium (DLS)

October, 2023. The Most Notable Paper Award from the 19th Dynamic Language Symposium recognizes the most influential research work, with 10 years of perspective, and this year the featured article is "Cast Insertion Strategies for Gradually-Typed Objects" (2013), by Esteban Allende, Johan Fabry and Éric Tanter, all of whom were, at that time, members of the Department of Computer Science at the University of Chile and the Pleiad Laboratory

Éric Tanter

The gradual typing (Gradual Typing) allows for the smooth and progressive integration of dynamic and static programming languages: this work explores the costs, both on a micro and macro scale, of various strategies that seek to protect gradual typing in an object-oriented programming language, examining how these different strategies affect typed, untyped, and both typed and untyped code components. 

The 19th Symposium on Dynamic Languages (DLS) is one of the conferences of the ACM SIGPLAN, which focuses on the discussion of dynamically typed languages, their implementation, and application. DLS provides a space for researchers and those working on practical applications to meet and share their knowledge, experiences, and ideas for future research and development in the field.

Éric Tánter, a researcher at Millennium Institute Foundational Research on Data, points out that "gradual typing was something quite new 10 years ago, with important theoretical advances but few implementations in real programming languages. Esteban Allende's doctoral thesis Esteban Allende focused on implementing gradual typing for the Smalltalk language. While working on this implementation, we realized several challenges for implementing gradual typing in object-oriented languages, and this paper presents an analysis of these problems and several possible solutions.

In DLS, they highlight it as a seminal contribution to the understanding of the performance and efficiency of ,, which since then has become an important area of research. "All the strategies used in gradually typed languages today can trace their lineage back to the strategies described and proposed in this paper, especially the proposed hybrid approach has been adapted numerous times by many systems, giving this work a long-lasting impact that transcends its original scope," they highlight in the acknowledgment. 

In subsequent years, several studies focused on how to implement gradual typing, the efficiency problems it can bring, and other challenges. Also, the industry began to propose several languages with gradual types, so this award recognizes the impact that this work had on those subsequent efforts, according to the symposium.

For Éric Tánter, in the study of dynamically typed languages, gradual typing is a very important line of research. "But it is not the only one: the line of research on how to optimize the implementation of dynamic languages and how to evolve them for emerging contexts (cloud programming, AI, etc.) remains very active."

Static, dynamic, and gradual

Programming languages can be divided into two main groups: statically typed, in which type checking is performed at compile time (such as Java, C++, Scala, OCaml, among others), and dynamically typed languages, in which type checking is performed at runtime (such as JavaScript, Python, Ruby, etc.). 

Both families have dual advantages and disadvantages: static typing ensures early error detection and allows for certain optimizations, but it introduces some complexity and imposes conservative restrictions, while dynamic typing is more flexible and simpler, but is generally more expensive and leaves error reporting to the program execution itself.

The gradual typing or gradual typing is precisely a way of combining the strengths of each language family, and as evidence of the interest in this line of thinking, many dynamic languages now have optional/gradual type systems (TypeScript for JavaScript, Python 3 and its type hints, Hack for PHP, Sorbet for Ruby, etc.).