Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

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

NotificationsYou must be signed in to change notification settings

souffle-lang/souffle

Repository files navigation

This is the official repository for theSoufflé language project.The Soufflé language is similar to Datalog (but has terms known as records), and is frequently used as adomain-specific language for analysis problems.

License: UPLCI-TestsMSVC-CI-Testscodecov

Features of Soufflé

  • Efficient translation to parallel C++ of Datalog programs (CAV'16, CC'16)

  • Efficient interpretation using de-specialization techniques (PLDI'21)

  • Specialized data structure for relations (PACT'19, PPoPP'19, PMAM'19) with optimal index selection (VLDB'18)

  • Extended semantics of Datalog, e.g., permitting unbounded recursions with numbers and terms

  • Simple component model for Datalog specifications

  • Recursively defined record types/ADTs (aka. constructors) for tuples

  • User-defined functors

  • Strongly-typed types for safety

  • Subsumption

  • Aggregation

  • Choice Construct (APLAS'21)

  • Extended I/O system for relations (including SQLITE3 interfaces)

  • C++/SWIG interfaces

  • Provenance/Debugging (TOPLAS'20)

  • Profiling tools

How to get Soufflé

If you are using Ubuntu, Fedora or Oracle Linux, get a packaged version from theReleases section.

Or usegit to obtain the source code of Soufflé.

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

Build instructions can be foundhere.

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"

Issues and Discussions

Use either theissue list for

  • bug reporting

  • enhancements

  • documentation

  • proposals

  • releases

  • compatibility issues

  • refactoring.

or use thediscussions bulletin board to engage with other community members and for asking questions you’re wondering about.

How to contribute

Issues and bug reports for Souffle are found in theissue 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 thesouffle-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 thedeveloper tutorial.

For academics

If you use our work, please cite our work. A list of publications can be foundhere. The main publications are:

  • Herbert Jordan, Bernhard Scholz, Pavle Subotić: Souffle: On Synthesis of Program Analyzers. CAV 2016.
  • Bernhard Scholz, Herbert Jordan, Pavle Subotić, Till Westmann: On fast large-scale program analysis in Datalog. CC 2016: 196-206

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.

Topics

Resources

License

Stars

Watchers

Forks

Packages

No packages published

[8]ページ先頭

©2009-2025 Movatter.jp