Building a Typed Scripting Language

Zachary Palmer, Johns Hopkins University
Host: Scott Smith

Since the 1990s, scripting languages such as Python and JavaScript have grown rapidly in popularity. This is due in large part to their flexibility and expressiveness: scripts use a terse syntax, provide highly abstract operations, and allow ad-hoc manipulation of data. Unfortunately, this comes at the cost of performance and scalability. All widely-used scripting languages today are dynamically typed, which severely limits the effectiveness of compile-time optimizations and prevents valuable static analysis tools from being used in debugging. Attempts to retrofit type systems and other static analyses onto scripting languages have had limited success; existing scripting languages were designed without these tools in mind and so contain fundamentally dynamic operations that defy analysis.

This talk gives an overview of the BigBang project, which takes a different approach: we design a scripting language from scratch. We observe that the fundamentally dynamic operations in scripting languages are not necessary to give them their expressive and productive feel. Instead, we select an unusual set of core operations, careful to ensure that they are statically typable, and use them to encode common scripting language functionality. Traditional type theories are unable to capture these operations, so we discuss how techniques from abstract interpretation can be adopted into type theory to produce a sound and decidable type system.

Speaker Biography

Zachary Palmer is a Ph.D. candidate in Computer Science at Johns Hopkins University, advised by Dr. Scott F. Smith. His life as a graduate student started following a carefully-planned and lucky escape from an industry job as a software engineer. He plans to continue pursuing his interests in typed scripting languages, compile-time metaprogramming, and teaching in his position as a visiting professor at Swarthmore College starting in the Fall semester.