Incrementalizing Lattice-Based Program Analyses in Datalog
Date: Thu, November 01, 2018
Room: Dijkstrazaal HB09.150 (building 36)
Tamás Szabó will practise this talk: https://2018.splashcon.org/event/splash-2018-oopsla-incrementalizing-lattice-based-program-analyses
Program analyses detect errors in code but have to trade off precision, recall, and performance. However, when code changes frequently as in an IDE, repeated re-analysis from-scratch is unnecessary and leads to poor performance. Incremental program analysis promises to deliver fast feedback after a code change by deriving a new analysis result from the previous one, and prior work has shown that order-of-magnitude performance improvements are possible. However, existing frameworks for incremental program analysis only support Datalog-style relational analysis, but not lattice-based analyses that derive and aggregate lattice values. To solve this problem, we present the ILPA incremental program analysis framework that supports relational analyses and lattice-based computations. ILPA is based on a novel algorithm that enables the incremental maintenance of recursive lattice-value aggregation, which occurs when analyzing code with cyclic control flow by fixpoint iteration. To demonstrate our approach, we realized strong-update points-to analysis and string analyses for Java in ILPA and present performance measurements that demonstrate incremental analysis updates within milliseconds.
Hendrik van Antwerpen | Scopes as Types
Next: | Abstract Interpretation of Program Transformations using Regular Tree Grammars