Moving Fast with High Reliability using Pluggable Types
For many real-world applications, software reliability is of critical importance. At the same time, developers need to be able to move fast in developing new features and products. In this talk, I will describe recent work on using pluggable type systems to reduce the tension between these seemingly-conflicting needs. First, I will present NullAway, a novel nullability type system for Java. NullAway improves on previous work by reducing build-time overhead and requiring fewer annotations through carefully-targeted unsoundness. Then, I will describe more recent work on performing lightweight and modular typestate analysis using pluggable types, by targeting a class of typestate properties that can be checked soundly without heavyweight alias analysis. I will present two instantiations of this approach: the Object Construction Checker, a novel type system to ensure the safe usage of builders and other complex initialization schemes, and work in progress on preventing resource leaks.
I’m an associate professor at the University of California, Riverside. Previously I worked at IBM Research, Samsung Research, and Uber. My research focuses on developing tools and techniques to make large-scale software more reliable, performant, secure, and maintainable. For more details, see my homepage.