Top Qs
Timeline
Chat
Perspective
Soufflé (programming language)
Parallel logic programming language From Wikipedia, the free encyclopedia
Remove ads
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.[2][3][4]
Remove ads
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
- An interpreter[5] and a compiler[6] that targets parallel C++ (C++ that uses OpenMP). Both the interpreter and compiler use semi-naïve evaluation.[7]
- Stratified negation[8]
- Aggregation[9]
- Automatic index selection[10]
- Specialized parallel data structures,[11] including disjoint-sets,[12] B-trees,[13] and tries.[14]
- Static typing[15]
- Records and algebraic data types[16]
- A foreign function interface[17]
Related tools
In addition to a compiler and an interpreter, the Soufflé project also publishes:
- a profiler,
- a "provenance"-based debugger,[18]
- an "auto-scheduler" (also called a "join optimizer") that chooses efficient query plans based on a profile, as in profile-guided optimization.[19]
Remove ads
Applications
Soufflé has been used to build static analyzers, including:
- A pointer analysis for Java[20]
- A control-flow analysis for Scheme[21]
- Various analyses for smart contract languages[22]
It has also been used to build tools for binary analysis, including reverse engineering,[23] and disassemblers.[24]
References
External links
Wikiwand - on
Seamless Wikipedia browsing. On steroids.
Remove ads