Soufflé

Soufflé is a Datalog compiler that is optimised for static program analysis, such as points-to, taint, and constant-propagation.

It exploits the monotonic nature of Datalog computations and implements novel compilation techniques to translate Datalog programs to efficient and parallel C++ programs.

Soufflé aims to support designers of program analyses and to increase their productivity, i.e., enabling rapid prototyping for static program analysis, and making deep design-space explorations possible. This feature would be useful for tool designers writing static program analyses.

How it works

The core of the compiler is a Futamura projection that translates a declarative Datalog program to an executable imperative C++ program via partial evaluation.

Soufflé aims to support designers of program analyses and to increase their productivity, i.e., enabling rapid prototyping for static program analysis, and making deep design-space explorations possible. This feature would be useful for tool designers writing static program analyses.

Main Challenges

Scalability: The execution of static program analyses written in Datalog is a major challenge for large codebases. For this reason, new high-performance execution models are needed that go beyond the state-of-the-art techniques.

Soufflé meets that challenge by aiming to be just a computational machinery for static program analyses. It foregoes the needs for standard Datalog uses in relational databases, i.e., it does not provide persistency, and other relational database properties.

Soufflé is open source.

The latest download is available from the Oracle Technology Network: http://www.oracle.com/technetwork/oracle-labs/souffle/overview/index.html

To find out more, contact Paddy Krishnan.


Hardware and Software, Engineered to Work Together