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.

Quick Start

Get Soufflé running in minutes. Pre-built releases are available for Debian-based systems and macOS. An Ubuntu PPA repository provides both unstable and stable releases.

Visit the Download page →

Why the Name Soufflé?

The name plays on the idea of a "soufflé" — a light, airy dish that rises — reflecting how high-level Datalog specifications are synthesized into efficient, parallel C++ programs. The tool lifts logic into performance.

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.