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.
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.
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, automatic test generation. He is also interested in exploring the use of LLMs to enhance security analysis. More specifically, Paddy has contributed to work on vulnerability detection, runtime application-self protection (RASP), software supply chain security, security analysis of infrastructure-as-code, and automatic program repair. 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, and use of LLMs towards program repair.
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.