Soufflé (programming language)

Soufflé is an open source parallel logic programming language, influenced by Datalog. Soufflé includes both an interpreter and a compiler that targets parallel C++. Soufflé has been used to build static analyzers, disassemblers, and tools for binary reverse engineering. Soufflé is considered by academic researchers to be high-performance and "state of the art," and is often used in benchmarks in academic papers.

Programming examples

Given a set of edges in a graph, the following program computes the set of (directed) paths between any two nodes. This is also known as the transitive closure of the edge relation.

.decl edge(x:number, y:number)
.input edge

.decl path(x:number, y:number)
.output path

path(x, y) :- edge(x, y).
path(x, y) :- path(x, z), edge(z, y).

Features

In addition to a compiler and an interpreter, the Soufflé project also publishes:

Applications

Soufflé has been used to build static analyzers, including:

It has also been used to build tools for binary analysis, including reverse engineering, and disassemblers.

References

Sources

Uses material from the Wikipedia article Soufflé (programming language), released under the CC BY-SA 4.0 license.