This is the official repository for the Soufflé language project. The Soufflé language is similar to Datalog (but has terms known as records), and is frequently used as a domain-specific language for analysis problems.
- Efficient translation to parallel C++ of Datalog programs
- Efficient interpretation
- Extended semantics of Datalog, e.g., permitting unbounded recursions with numbers and terms
- Simple component model for Datalog specifications
- Recursively defined record types (aka. constructors) for tuples
Use git to obtain the source code of Soufflé.
$ git clone git://github.com/souffle-lang/souffle.git
Build instructions can be found here.
If you have written code for an older version of Souffle, please use the command line flag --legacy
.
Alternatively, please add the following line to the start of your source-code:
.pragma "legacy"
Issues and bug reports for Souffle are found in the issue list. This list is also where new contributors may find extensions / bug fixes to work on.
To contribute in this repo, please open a pull request from your fork of this repository. The general workflow is as follows.
- Find an issue in the issue list.
- Fork the souffle-lang/souffle repo.
- Push your changes to a branch in your forked repo.
- Submit a pull request to souffle-lang/souffle from your forked repo. Our continuous integration framework enforces coding guidelines with the help of clang-format and clang-tidy.
For more information on building and developing Souffle, please read the developer tutorial.