Soufflé

Soufflé: a Datalog compiler optimised for static program analysis, e.g. points-to and taint. It translates Datalog programs to efficient and parallel C++ programs and enables rapid prototyping.

Project Details

Soufflé

Soufflé

Soufflé: a Datalog compiler optimised for static program analysis, e.g. points-to and taint. It translates Datalog programs to efficient and parallel C++ programs and enables rapid prototyping.

Project Overview

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.

Principal Investigator

Padmanabhan Krishnan

Research Director

Paddy Krishnan is a Research Director at Oracle Labs in Brisbane, Australia and leads the team. He has been with Oracle since Feb 2013. His current research interests are in the areas of software security, program analysis, and automatic test generation. At Oracle, Paddy has worked on detecting security vulnerabilities in the JDK, in Java-based web applications and in JavaScript-based client-side code. More recently he is exploring the expressive power of different models in the context of security monitoring. He is also interested in infrastructure-related security. He  has also supervised student interns in the area of scalability and applicability of points-to analysis, verification of concurrent data-structures, using mutation testing to detect security issues, and security analysis of SDNs and microservices.

Prior to joining Oracle Labs he was an academic for over 20 years with some industrial research experience. He is a Senior Member of both the ACM and the IEEE.

Publications