Thodoris Sotiropoulos is a postdoctoral researcher in the Advanced Software Technologies group at ETH Zurich. His research focuses on the design of appropriate abstractions that help examine the reliability of complex software, such as compilers, data-oriented systems, or software that heavily relies on the file system. He completed his PhD at the Athens University of Economics and Business working in the areas of programming languages, program analysis, and testing. He holds an MSc with distinction in Advanced Computing from Imperial College London and he has previously worked as a software engineer at the Greek Research and Technology Network (GRNET). Recently, he was an intern at Amazon Web Services (AWS) where he worked on the design and implementation of static analysis techniques for detecting security issues. Thodoris has published papers at PLDI, POPL, ICSE, OOPSLA, and many other venues, some of them winning major awards.
This talk will inform developers about the pitfalls in software development process introduced by faulty compilers along with the associated impact. At the same time, I will provide highlights for language designers and compiler engineers about which language features are the hardest to get right and implement. Finally, this talk will present one of the most recent advancements in compiler and programming language testing, which also involves applications in other domains, such as library and API testing.
Developers, language designers, compiler engineers
Static typing in programming languages is crucial for robust software development. Flaws in type checkers lead to (1) reliability and security ramifications on the programs compiled with the faulty compilers, and (2) degradation of the programmers’ experience and productivity. In particular, compiler typing bugs typically cause frustrating rejections of well-typed programs, dangerous acceptances of erroneous, type-unsafe programs, or annoying crashes and compilation performance issues.
In this session, I will present our ongoing efforts on enhancing the reliability of compilers' type checkers using randomized software testing. Within three years, we have found more than 250 bugs (of which 140 bugs have been fixed) in industrial-strength compilers, such as Java, Kotlin, Scala, and Groovy. Most of the discovered bugs lie in critical components of type checkers, including type inference, parametric polymorphism, overloading, or higher-order functions.