DDlog is a bottom-up, incremental, in-memory, typed Datalog engine.
Many real-world applications based on deductive databases
require incrementally updating output relations (tables) in response to
changes to input relations. To make such applications easier to implement
we have created Differential Datalog (DDlog), a dialect of Datalog that
automates incremental computation. A DDlog programmer writes traditional, non-incremental Datalog programs. However, the execution model of DDlog is fully incremental: at runtime DDlog programs receive streams of changes to the input relations (insertions or deletions) and produce streams of corresponding changes to derived relations. The DDlog compiler translates DDlog programs to Dierential Dataow (DD) programs. The DDlog language is targeted for system builders. In consequence, the language emphasizes usability, by providing a rich type system, a powerful expression language, a module system, including string manipulation, arithmetic, and integration with C, Rust, and Java. The code is open-source, available using an MIT permissive license.