Jump to content

Soufflé (programming language)

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by Citation bot (talk | contribs) at 21:28, 27 February 2023 (Alter: template type, url, journal. URLs might have been anonymized. Add: volume, series, isbn, eprint, class, hdl, s2cid, doi, authors 1-1. Removed proxy/dead URL that duplicated identifier. Removed parameters. Some additions/deletions were parameter name changes. | Use this bot. Report bugs. | Suggested by Headbomb | #UCB_toolbar). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
Soufflé
ParadigmsDeclarative, Logic programming
FamilyDatalog
Stable release
2.3[1]
Typing disciplineStatic
LicenseUPL
Filename extensions.dl
Websitesouffle-lang.github.io
Influenced by
Datalog

Soufflé is an open source parallel logic programming language, influenced by Datalog. Soufflé includes both an interpreter[2] and a compiler[3] that targets parallel C++ (C++ that uses OpenMP). Soufflé has been used to build static analyzers[4] (especially for smart contracts),[5][6][7][8] compilers, tools for reverse engineering,[9] and disassemblers.[10] Soufflé is considered by academic researchers to be high-performance and "state of the art," and is often used in benchmarks in academic papers.[11][12][13]

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

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

References

  1. ^ "Release Release 2.3 · souffle-lang/souffle". GitHub. Retrieved 2023-02-26.
  2. ^ Hu, Xiaowen; Zhao, David; Jordan, Herbert; Scholz, Bernhard (2021-06-15). "Artifact for Paper: An Efficient Interpreter for Datalog by De-specializing Relations". Artifact Digital Object Group. doi:10.1145/3410297. Retrieved 2023-02-26.
  3. ^ Scholz, Bernhard; Jordan, Herbert; Subotić, Pavle; Westmann, Till (2016-03-17). "On fast large-scale program analysis in Datalog". Proceedings of the 25th International Conference on Compiler Construction. CC 2016. New York, NY, USA: Association for Computing Machinery: 196–206. doi:10.1145/2892208.2892226. ISBN 978-1-4503-4241-4. S2CID 7531543.
  4. ^ Antoniadis, Triantafyllou & Smaragdakis 2017.
  5. ^ Tsankov, Petar; Dan, Andrei; Drachsler-Cohen, Dana; Gervais, Arthur; Bünzli, Florian; Vechev, Martin (2018-10-15). "Securify: Practical Security Analysis of Smart Contracts". Proceedings of the 2018 ACM SIGSAC Conference on Computer and Communications Security. CCS '18. New York, NY, USA: Association for Computing Machinery: 67–82. doi:10.1145/3243734.3243780. hdl:10044/1/87935. ISBN 978-1-4503-5693-0. S2CID 46936025.
  6. ^ Brent, Lexi; Jurisevic, Anton; Kong, Michael; Liu, Eric; Gauthier, Francois; Gramoli, Vincent; Holz, Ralph; Scholz, Bernhard (2018-09-11). "Vandal: A Scalable Security Analysis Framework for Smart Contracts". arXiv:1809.03981 [cs.PL].
  7. ^ Grech, Neville; Kong, Michael; Jurisevic, Anton; Brent, Lexi; Scholz, Bernhard; Smaragdakis, Yannis (2018-10-24). "MadMax: surviving out-of-gas conditions in Ethereum smart contracts". Proceedings of the ACM on Programming Languages. 2 (OOPSLA): 116:1–116:27. doi:10.1145/3276486. S2CID 51920261.
  8. ^ Praitheeshan, Purathani; Pan, Lei; Yu, Jiangshan; Liu, Joseph; Doss, Robin (2020-09-16). "Security Analysis Methods on Ethereum Smart Contract Vulnerabilities: A Survey". arXiv:1908.08605 [cs.CR].
  9. ^ Sun, Yihao; Ching, Jeffrey; Micinski, Kristopher (2021-01-12). "Declarative Demand-Driven Reverse Engineering". arXiv:2101.04718 [cs.PL].
  10. ^ Flores-Montoya, Antonio; Schulte, Eric (2020-08-12). "Datalog disassembly". Proceedings of the 29th USENIX Conference on Security Symposium. SEC'20. USA: USENIX Association: 1075–1092. ISBN 978-1-939133-17-5.
  11. ^ Ketsman, Bas; Koutris, Paraschos (2022-06-28). "Modern Datalog Engines". Foundations and Trends® in Databases. 12 (1): 1–68. doi:10.1561/1900000073. ISSN 1931-7883.
  12. ^ Gilray, Thomas; Sahebolamri, Arash; Kumar, Sidharth; Micinski, Kristopher (2022-11-21). "Higher-Order, Data-Parallel Structured Deduction". arXiv:2211.11573 [cs.PL].
  13. ^ Sahebolamri, Arash; Gilray, Thomas; Micinski, Kristopher (2022-03-18). "Seamless deductive inference via macros". Proceedings of the 31st ACM SIGPLAN International Conference on Compiler Construction. CC 2022. New York, NY, USA: Association for Computing Machinery: 77–88. doi:10.1145/3497776.3517779. ISBN 978-1-4503-9183-2. S2CID 247522107.
  14. ^ Subotić, Pavle; Jordan, Herbert; Chang, Lijun; Fekete, Alan; Scholz, Bernhard (October 2018). "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. S2CID 53569679.
  15. ^ Jordan, Herbert; Subotić, Pavle; Zhao, David; Scholz, Bernhard (2022-01-25). "Specializing parallel data structures for Datalog". Concurrency and Computation: Practice and Experience. 34 (2). doi:10.1002/cpe.5643. ISSN 1532-0626.
  16. ^ Nappa, Patrick; Zhao, David; Subotić, Pavle; Scholz, Bernhard (September 2019). "Fast Parallel Equivalence Relations in a Datalog Compiler". 2019 28th International Conference on Parallel Architectures and Compilation Techniques (PACT): 82–96. doi:10.1109/PACT.2019.00015. ISBN 978-1-7281-3613-4.
  17. ^ Jordan, Herbert; Subotić, Pavle; Zhao, David; Scholz, Bernhard (2019-02-16). "A specialized B-tree for concurrent datalog evaluation". Proceedings of the 24th Symposium on Principles and Practice of Parallel Programming. PPoPP '19. New York, NY, USA: Association for Computing Machinery: 327–339. doi:10.1145/3293883.3295719. ISBN 978-1-4503-6225-2. S2CID 59617209.
  18. ^ Jordan, Herbert; Subotić, Pavle; Zhao, David; Scholz, Bernhard (2019-02-17). "Brie: A Specialized Trie for Concurrent Datalog". Proceedings of the 10th International Workshop on Programming Models and Applications for Multicores and Manycores. PMAM'19. New York, NY, USA: Association for Computing Machinery: 31–40. doi:10.1145/3303084.3309490. ISBN 978-1-4503-6290-0. S2CID 239258588.
  19. ^ 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. S2CID 218905148.
  20. ^ 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. Lecture Notes in Computer Science. 13474. Cham: Springer International Publishing: 83–102. doi:10.1007/978-3-031-16767-6_5. ISBN 978-3-031-16767-6.

Sources