Changelog for souffle-haskell-2.0.0
Changelog
All notable changes to this project (as seen by library users) will be documented in this file. The CHANGELOG is available on Github.
[2.0.0] - 2020-08-23
Added
- The
Fact
typeclass now also requires you to specify theFactDirection
. This prevents inconsistent and buggy behavior when trying to use a fact in an invalid way (e.g. trying to add an output-only fact). - DSL for creating Soufflé programs directly from Haskell.
See the docs of
Language.Souffle.Experimental
for more information.
Changed
- souffle-haskell now supports Soufflé version 2.0.1.
getFacts
,findFact
,addFact
andaddFacts
now have stricter constraints in their type signatures to prevent invalid usage of facts.runSouffle
for both compiled and interpreted mode andrunSouffleWith
for interpreted mode have updated type signatures to be able to automatically cleanup temporary files created while interacting with Souffle.
Removed
init
function for both compiled and interpreted mode. Initialization is now handled by therunSouffle*
functions. This change makes automatic cleanup of created files possible and prevents double initialization of Souffle programs.cleanup
function for interpreted mode, this is handled automatically now.
[1.1.0] - 2020-07-26
Added
- getFacts can now return facts in a fixed size array (from the array package).
- Added support for facts containing "unsigned" values.
- Added support for facts containing "float" values.
Fixed
- The
run
function inLanguage.Souffle.Interpeted
now always closes stdout and stderr handles of the external souffle process.
Removed
Language.Souffle
module is removed since it only existed due to legacy reasons. This removal forces users to be explicit about the mode they are using souffle-haskell in (interpreted or compiled mode). If you experience compilation errors, rename all imports ofLanguage.Souffle
toLanguage.Souffle.Compiled
.
[1.0.0] - 2020-07-09
Changed
- Libraries using souffle-haskell are now "self-contained": if a project depends on such a library, it will not require to also have Souffle installed.
- souffle-haskell now supports Soufflé version 2.0.0.
writeFiles
now takes an extraFilePath
argument for writing facts to a certain directory.
Deleted
- Language.Souffle.TH module is deleted because it is no longer needed anymore
due to a change in the generated Souffle code. The generated code can now be
correctly integrated by adding the files to
cxx-sources
in package.yaml / cabal file.
[0.2.3] - 2020-05-21
Changed
- Optimize performance when marshalling and unmarshalling facts.
[0.2.2] - 2020-04-30
Changed
- Fix compile time issue when generically deriving
Marshal
typeclass for data types with more than 3 fields.
[0.2.1] - 2020-04-25
Changed
- Trimmed dependencies to make the library more lightweight.
[0.2.0] - 2020-04-22
Added
- Added Language.Souffle.Interpreted module for running Souffle programs in interpreted mode.
NOTE: For this mode the CSV fact files must use TAB (
'\t'
) characters as separators. - In interpreted mode, you can configure where the library looks for datalog files or where
the souffle executable is located. For more information, see the
runSouffle
andrunSouffleWith
functions in the Language.Souffle.Interpreted module.
Changed
- Introduced Language.Souffle.Class module as separation of the typeclass and the Language.Souffle.Compiled module to offer a uniform API in both interpreted and compiled mode.
[0.1.0] - 2019-12-21
Added
- Added Marshal instance for lazy and strict Text
Changed
- getFacts can now return a vector instead of a list, based on type inference. This allows for a more efficient representation in memory as well as being able to allocate all needed memory once before collecting facts.
[0.0.1] - 2019-10-23
Added
- Initial version of the library