-
Composition feature: added the
ascent_source!
macro and theinclude_source!
syntax (thanks to @JoranHonig for the suggestion (#44) and @StarGazerM for the idea). -
Made index fields in generated Ascent code private (#58).
-
Added
|
as the disjunction token in disjunction clauses, deprecating||
. -
Added a small optimization where rule evaluation is skipped if any body relation is empty (#57)
-
Fixed unsoundness in
util::update
(#41) -
Moved
ascent_par!
and required dependencies behind Cargo featurepar
(enabled by default)
-
BYODS (Bring Your Own Data Structures to Datalog): this version allows relations in Ascent programs to be backed by custom data structures (for improved algorithmic efficiency, modified semantics, etc.).
-
Introduction of the crate
ascent-byods-rels
, which contains a number of such data structures (for equivalence and transitive relations). -
Introduction of
impl
directives with different bounds fromstruct
declarations for generic parameters (#25)
-
Parallel evaluation: with introduction of
ascent_par!
andascent_run_par!
macros, Ascent programs can utilize multiple CPU cores to speed up evaluation. -
Made improvements to handling of rules that start with
if
,let
, orfor
(they can be simple joins).
- Reduced the size of generated code for a rule with N dynamic relations from O(N * 2^N) to O(N^2); dramatically improving compile times for some programs.
- Introduced macro-in-macros!
- Bug fix
- Added run_timeout
- Disallowed shadowed variables