FlowLog: Re-thinking Datalog for Fast and Extensible Static Analysis
2026-07-27 • Programming Languages
Programming LanguagesLogic in Computer ScienceSoftware Engineering
AI summaryⓘ
The authors present FlowLog, a Datalog compiler that improves static analysis by converting Datalog programs into Differential Dataflow executables. This approach balances efficiency and flexibility, allowing users to quickly update facts, tune rules, and extend semantics beyond standard Datalog without complex rewrites. In tests on 24 real-world benchmarks, FlowLog runs faster and scales better than existing engines while using memory efficiently. The authors demonstrate its capabilities with an interactive points-to analysis, showing fast incremental updates, profiling tools, and semantic extensions.
Datalogstatic analysisDifferential Dataflowincremental evaluationprogram analysispoints-to analysiscompilerbenchmarkingrule tuningprofiling
Authors
Zhenghong Yu, Hangdong Zhao, Wanzhu Hou, Paraschos Koutris
Abstract
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é-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.