Search papers, labs, and topics across Lattice.
This paper introduces FlowLog, a Datalog compiler that transforms Souffl茅-style programs into Differential Dataflow executables, addressing the limitations of existing static analysis engines that struggle with efficiency and extensibility. By enabling users to incrementally update analyses and tune performance in real-time, FlowLog significantly enhances the usability of static analyzers in practical scenarios. The results show that FlowLog outperforms state-of-the-art engines across 24 benchmarks, demonstrating superior runtime efficiency and memory management.
FlowLog allows users to seamlessly switch between one-shot and incremental evaluations of static analyses, achieving updates in milliseconds while tuning performance on-the-fly.
Datalog is widely used to build static analyzers, yet existing engines often force a tradeoff between efficiency and extensibility. In practice, static analyses are not run once and forgotten: users edit facts, tune rules, diagnose bottlenecks, and often need semantics beyond standard Datalog, leaving these tasks to ad hoc tooling or invasive engine rewrites. We demonstrate FlowLog, a Datalog compiler that turns Souffl\'e-style programs into Differential Dataflow executables for efficient and extensible static analysis. Across 24 benchmarks derived from real-world workloads, FlowLog consistently outperforms state-of-the-art engines in runtime while remaining memory-efficient and scaling better. The demonstration walks attendees through a DOOP points-to analysis. Attendees run it, switching the same program from one-shot to incremental evaluation that retracts a fact and updates results in milliseconds; tune it, inspecting per-operator costs in a browser-based profiler and repairing a bad join order; and extend it with a k-core example that uses semantics beyond Datalog.