packages feed

souffle-haskell-2.0.0: CHANGELOG.md

# Changelog

All notable changes to this project (as seen by library users) will be documented in this file.
The CHANGELOG is available on [Github](https://github.com/luc-tielen/souffle-haskell.git/CHANGELOG.md).

## [2.0.0] - 2020-08-23

### Added

- The `Fact` typeclass now also requires you to specify the `FactDirection`.
  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` and `addFacts` now have stricter
  constraints in their type signatures to prevent invalid usage of facts.
- `runSouffle` for both compiled and interpreted mode and `runSouffleWith`
  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 the `runSouffle*` 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 in `Language.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 of `Language.Souffle` to
  `Language.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 extra `FilePath` 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` and `runSouffleWith`
  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