TL;DR
Flow is a fast, precise, and scalable type checker for JavaScript that leverages advanced inference, formal analysis, and parallel processing to improve bug detection and developer experience.
Contribution
This paper introduces Flow, a novel JavaScript type checker combining sophisticated inference, formal soundness proof, and high performance through parallelization and incremental analysis.
Findings
Flow detects non-trivial bugs in JavaScript code.
Flow provides near-instantaneous feedback during development.
Flow is used by thousands of developers on millions of lines of code.
Abstract
In this paper we present the design and implementation of Flow, a fast and precise type checker for JavaScript that is used by thousands of developers on millions of lines of code at Facebook every day. Flow uses sophisticated type inference to understand common JavaScript idioms precisely. This helps it find non-trivial bugs in code and provide code intelligence to editors without requiring significant rewriting or annotations from the developer. We formalize an important fragment of Flow's analysis and prove its soundness. Furthermore, Flow uses aggressive parallelization and incrementalization to deliver near-instantaneous response times. This helps it avoid introducing any latency in the usual edit-refresh cycle of rapid JavaScript development. We describe the algorithms and systems infrastructure that we built to scale Flow's analysis.
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.
