Soufflé (programming language)
In-game article clicks load inline without leaving the challenge.
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.
Features
- An interpreter and a compiler that targets parallel C++ (C++ that uses OpenMP). Both the interpreter and compiler use semi-naïve evaluation.
- Stratified negation
- Aggregation
- Automatic index selection
- Specialized parallel data structures, including disjoint-sets, B-trees, and tries.
- Static typing
- Records and algebraic data types
- A foreign function interface
Related tools
In addition to a compiler and an interpreter, the Soufflé project also publishes:
- a profiler,
- a "provenance"-based debugger,
- an "auto-scheduler" (also called a "join optimizer") that chooses efficient query plans based on a profile, as in profile-guided optimization.
Applications
Soufflé has been used to build static analyzers, including:
- A pointer analysis for Java
- A control-flow analysis for Scheme
- Various analyses for smart contract languages
It has also been used to build tools for binary analysis, including reverse engineering, and disassemblers.
Sources
- Jordan, Herbert; Scholz, Bernhard; Subotić, Pavle (2016). . In Chaudhuri, Swarat; Farzan, Azadeh (eds.). Computer Aided Verification. Lecture Notes in Computer Science. Vol. 9780. Cham: Springer International Publishing. pp. 422–430. doi:. ISBN 978-3-319-41540-6. S2CID .
- Antoniadis, Tony; Triantafyllou, Konstantinos; Smaragdakis, Yannis (2017-06-18). . Proceedings of the 6th ACM SIGPLAN International Workshop on State of the Art in Program Analysis. SOAP 2017. New York, NY, USA: Association for Computing Machinery. pp. 25–30. doi:. ISBN 978-1-4503-5072-3. S2CID .
External links
- on GitHub