Soufflé is an open source parallel logic programming language, influenced by Datalog. Soufflé includes both an interpreter and a compiler that targets parallel C++ (C++ that uses OpenMP). Soufflé has been used to build static analyzers (especially for smart contracts), compilers, tools for reverse engineering, and disassemblers. 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) edges 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 Automatic index selection Specialized parallel data structures, including disjoint-sets, B-trees, and tries. Static typing Records and algebraic data types Related tools In addition to a compiler and an interpreter the Soufflé project also publishes: a profiler, a "provenance"-based debugger, an "auto-scheduler" that chooses efficient query plans based on a profile, as in profile-guided optimization. References Sources External links Project homepage Programming languages High-level programming languages