TL;DR
This paper introduces trace typing, a framework for automatically evaluating and comparing different retrofitted type systems on large codebases, aiding the design of safer and more effective type systems for dynamic languages.
Contribution
The paper presents trace typing, a novel quantitative evaluation method for retrofitted type systems, enabling systematic comparison and guiding design choices on large codebases.
Findings
Compared variations of type systems on JavaScript code
Validated and guided design of a new type system for JavaScript
Automatically identified dynamic type refinement checks
Abstract
Recent years have seen growing interest in the retrofitting of type systems onto dynamically-typed programming languages, in order to improve type safety, programmer productivity, or performance. In such cases, type system developers must strike a delicate balance between disallowing certain coding patterns to keep the type system simple, or including them at the expense of additional complexity and effort. Thus far, the process for designing retrofitted type systems has been largely ad hoc, because evaluating multiple variations of a type system on large bodies of existing code is a significant undertaking. We present trace typing: a framework for automatically and quantitatively evaluating variations of a retrofitted type system on large code bases. The trace typing approach involves gathering traces of program executions, inferring types for instances of variables and expressions…
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.
