Extended Paper: API-driven Program Synthesis for Testing Static Typing Implementations
Thodoris Sotiropoulos, Stefanos Chaliasos, Zhendong Su

TL;DR
This paper presents Thalia, an API-driven program synthesis approach for testing static typing implementations, generating small, feature-rich test programs that uncover numerous typing bugs in popular language compilers.
Contribution
It introduces a novel method for synthesizing small, API-based test programs to effectively test static type checkers, including fault-injection and semantics-preserving modes.
Findings
Uncovered 84 typing bugs across three language compilers.
Most bugs triggered by APIs with parametric polymorphism, overloading, and higher-order functions.
Thalia produces test programs with unique characteristics compared to existing tools.
Abstract
We introduce a novel approach for testing static typing implementations based on the concept of API-driven program synthesis. The idea is to synthesize type-intensive but small and well-typed programs by leveraging and combining application programming interfaces (APIs) derived from existing software libraries. Our primary insight is backed up by real-world evidence: a significant number of compiler typing bugs are caused by small test cases that employ APIs from the standard library of the language under test. This is attributed to the inherent complexity of the majority of these APIs, which often exercise a wide range of sophisticated type-related features. The main contribution of our approach is the ability to produce small client programs with increased feature coverage, without bearing the burden of generating the corresponding well-formed API definitions from scratch. To validate…
Peer Reviews
No public reviews on file for this paper yet. If you reviewed it on a platform where reviews are public (OpenReview, ICLR, NeurIPS, ICML), you can paste yours below so the community can read it here.
Code & Models
Videos
No videos yet. Explain this paper in a talk, walkthrough, or lecture? Add one.
Taxonomy
TopicsSoftware Engineering Research · Software Testing and Debugging Techniques · Software Reliability and Analysis Research
