All notable changes to this project (as seen by library users) will be documented in this file. The CHANGELOG is available on Github.
- Logical negation (of a single rule clause)
- Typed hole support
- Comparison operators
- Arithmetic operators (
+
,-
,*
,/
) - Possibility to link in external functions
- LSP support
- Document highlight
- Hover
- Diagnostics
- Improved dead code elimination
- Optimization passes:
- HoistConstraints (faster searches by narrowing search-space as early as possible)
- CLI: Allow emitting initial and transformed RA IR
- Support named fields in type definitions and extern definitions
- Support transpiling to Souffle
- Support running semantic analysis on multiple threads
- Relations now can have additional qualifiers marking them as inputs or outputs. Not providing any qualifier means it is now an internal fact.
- 0 is now parsed correctly as a number.
- Type holes now correctly show all possible results in a rule.
- BTree implementation is now better suited for large sets of facts
- WebAssembly support
- Support for the
string
data type - Wildcards are now supported in rule bodies
- Assignments are now supported in rule bodies
- Support for multiple occurences of the same variable in a single clause of a rule body
- (UTF-8) strings in relations are now supported
- Optimizations on the AST level:
- Copy propagation
- Dead code elimination
- Improved error reporting
- Parsing now continues after failure and reports multiple errors back to the user at once.
- Rules with multiple equalities.
- Edgecase in index selection algorithm. The algorithm now does not take
NoElem
variants into account.
- First MVP of the compiler! The happy path should work as expected, unsupported features or semantic errors should result in a (poorly formatted) error.