Skip to content

tiny-datalog 0.4.0

Choose a tag to compare

@andrewgoodchild andrewgoodchild released this 05 Oct 10:22
· 6 commits to main since this release

A common core, pluggable engines, and extensions.

  • tiny_datalog.core: the language every module shares — parser, validation, stratification, matching, formatting. Former private helpers are now public (match, aggregate_of, sort_key, Engine.substitutions, …); old names remain as aliases, and every previous import still works.
  • tiny_datalog.engines: semi-naive, naive, magic sets and tabling behind one interface and a registry. tiny-datalog --engine {seminaive,naive,magic,tabling} -q '...'.
  • Extensions (stable models, semirings, incremental, defeasible logic, Prolog, subsumption, containment) build on the core.

Also: duplication removed across modules (one shared CLI error handler; grounding through the engine — up to 6× faster on supply-chain), four pieces of dead code removed, and package line coverage up from 95% to 99% (303 tests).

Behaviour change: --magic -e used to ignore -e silently; --explain now requires a bottom-up engine and says so.