Skip to content

Soufflé is a variant of Datalog for tool designers crafting analyses in Horn clauses. Soufflé synthesizes a native parallel C++ program from a logic specification.

License

Notifications You must be signed in to change notification settings

joshuakarp/souffle

This branch is 2226 commits behind souffle-lang/souffle:master.

Folders and files

NameName
Last commit message
Last commit date
Sep 14, 2020
Sep 25, 2020
Apr 29, 2020
Oct 14, 2020
Aug 30, 2019
Aug 24, 2020
Nov 5, 2020
Oct 22, 2020
Oct 16, 2020
Apr 29, 2020
Feb 17, 2020
Aug 31, 2020
Sep 14, 2020
Sep 28, 2020
Oct 23, 2020
Nov 27, 2019
Mar 19, 2020
Sep 26, 2020
Feb 3, 2018
Oct 11, 2016
Aug 31, 2020
Nov 28, 2016

Repository files navigation

Welcome!

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.

License: UPL Zulip chat Build Status codecov

Features of Soufflé

  • 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

How to get Soufflé

Use git to obtain the source code of Soufflé.

$ git clone git://github.com/souffle-lang/souffle.git

Build instructions can be found here.

Legacy code

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"

How to contribute

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.

  1. Find an issue in the issue list.
  2. Fork the souffle-lang/souffle repo.
  3. Push your changes to a branch in your forked repo.
  4. 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.

About

Soufflé is a variant of Datalog for tool designers crafting analyses in Horn clauses. Soufflé synthesizes a native parallel C++ program from a logic specification.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • C++ 93.7%
  • M4 1.8%
  • Makefile 1.3%
  • Yacc 1.1%
  • Shell 0.9%
  • LLVM 0.4%
  • Other 0.8%