Soufflé (programming language)
Appearance
Soufflé is an open source parallel logic programming language, influenced by Datalog.
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[1]
- Specialized parallel data structures
Related tools
In addition to a compiler and an interpreter the Soufflé project also publishes:
- a profiler,
- a "provenance"-based debugger,[2]
- an "auto-scheduler" that chooses efficient query plans based on a profile, as in profile-guided optimization.[3]
References
Notes
- ^ Subotić, Pavle; Jordan, Herbert; Chang, Lijun; Fekete, Alan; Scholz, Bernhard (2018-10). "Automatic index selection for large-scale datalog computation". Proceedings of the VLDB Endowment. 12 (2): 141–153. doi:10.14778/3282495.3282500. ISSN 2150-8097.
{{cite journal}}
: Check date values in:|date=
(help) - ^ Zhao, David; Subotić, Pavle; Scholz, Bernhard (2020-04-17). "Debugging Large-scale Datalog: A Scalable Provenance Evaluation Strategy". ACM Transactions on Programming Languages and Systems. 42 (2): 7:1–7:35. doi:10.1145/3379446. ISSN 0164-0925.
- ^ Arch, Samuel; Hu, Xiaowen; Zhao, David; Subotić, Pavle; Scholz, Bernhard (2022). Villanueva, Alicia (ed.). "Building a Join Optimizer for Soufflé". Logic-Based Program Synthesis and Transformation. Cham: Springer International Publishing: 83–102. doi:10.1007/978-3-031-16767-6_5. ISBN 978-3-031-16767-6.
{{cite journal}}
: no-break space character in|title=
at position 11 (help)
Sources
- Jordan, Herbert; Scholz, Bernhard; Subotić, Pavle (2016). Chaudhuri, Swarat; Farzan, Azadeh (eds.). "Soufflé: On Synthesis of Program Analyzers". Computer Aided Verification. Cham: Springer International Publishing: 422–430. doi:10.1007/978-3-319-41540-6_23. ISBN 978-3-319-41540-6.
- Antoniadis, Tony; Triantafyllou, Konstantinos; Smaragdakis, Yannis (2017-06-18). "Porting doop to Soufflé: a tale of inter-engine portability for Datalog-based analyses". 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: 25–30. doi:10.1145/3088515.3088522. ISBN 978-1-4503-5072-3.