Subject: [bug#77448] [PATCH 0/2] gnu: Add Souffle.

From: Karl Hallsby <[email-masked]>
Date: Wed, 2 Apr 2025 00:18:25 -0500

From: Raven Hallsby <[email-masked]>

Souffle[1] is a Logic-based programming language based on Datalog. It is
possible to both interpret and compile. Further, SOuffle can be used
*natively* with C++ projects and offers Swig-generated FFI interfaces for Java
and Python.

I have tested this package by using the simple example steps at [2] and the
more scalable features of using SQLite to store and represent facts about your
logic's domain space[3].

In the future, I would like the test script I created to be merged into Guix
so that a package's usage can be tested alongside its definition (after being
built). Particularly because Souffle relies on a significant amount of
wrapping and has an embedded JSON configuration file as a runner script for
Souffle's compiler. I have brought this topic up on IRC in the past[4], and
the community has thought about them before. This package is an example of one
whose long-term maintenance in Guix would greatly benefit from this
infrastructure.

[1] https://souffle-lang.github.io/
[2] https://souffle-lang.github.io/simple
[3] https://souffle-lang.github.io/tutorial#io-directives
[4] https://logs.guix.gnu.org/guix/2025-03-19.log#175226

Raven Hallsby (2):
  licenses: Add UPL 1.0.
  gnu: Add souffle

 gnu/local.mk             |   1 +
 gnu/packages/datalog.scm | 235 +++++++++++++++++++++++++++++++++++++++
 guix/import/utils.scm    |   1 +
 guix/licenses.scm        |   6 +
 4 files changed, 243 insertions(+)
 create mode 100644 gnu/packages/datalog.scm

base-commit: 97523d50017f2cc5c190c9a2aa50f620b33b6318
--
2.49.0