Welcome
Soufflé is a variant of Datalog for tool designers crafting static analyses. It provides the ability to rapidly prototype and make deep design-space explorations. Soufflé synthesizes a parallel C++ program from a declarative Datalog specification, enabling large-scale program analysis such as points-to analysis for Java, taint analysis, and security checks.
The project commenced at Oracle Labs in Brisbane and was open-sourced in March 2016. It is supported by The University of Sydney, the University of Innsbruck, University College London, and the University of Athens.
Explore the Docs
Build & Install
Step-by-step guide to building Soufflé from source and installing on Debian-based systems and macOS.
Datalog Language
Reference for Soufflé's Datalog syntax: relations, clauses, negation, and declarative programming with Horn clauses.
Types
Static type system with primitive types (symbol, number), base types, union types, and sub-typing enforced at compile time.
Examples
Worked static-analysis examples including points-to analysis, DefUse chains, and context-sensitive flow graphs.
Run Soufflé
Interpreter and compiler modes, input/output handling with tab-separated EDB files, profiling, and parallel execution options.
Synthesis
How Soufflé uses Futamura projections to translate logic specifications into optimized parallel C++ executables.
Tuning & Profiler
Performance tuning, the profiler, magic-set transformations, inlining, and C++ interface details.
Advanced Features
Strings, arithmetic, components, records, aggregates, and other advanced language features.
Improving Documentation
This documentation is community-driven. If you spot an error, have a suggestion, or want to contribute a new section, you can help improve these pages. The source for the docs lives alongside the Soufflé project on GitHub.
Notable projects using Soufflé include DOOP, a points-to analysis framework for Java, and Insieme, a compiler research platform. Contributors from Oracle Labs in Brisbane, The University of Sydney, the University of Innsbruck, University College London, and the University of Athens continue to advance the tool.