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

Message ID cover.1743570894.git.karl@hallsby.com
Headers
Series gnu: Add Souffle. |

Message

Raven Hallsby April 2, 2025, 5:18 a.m. UTC
  From: Raven Hallsby <karl@hallsby.com>

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
  

Comments

Raven Hallsby April 2, 2025, 5:25 a.m. UTC | #1
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

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

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


base-commit: 97523d50017f2cc5c190c9a2aa50f620b33b6318
--
2.49.0