Skip to content

tiny-datalog 0.5.0

Choose a tag to compare

@andrewgoodchild andrewgoodchild released this 11 Oct 08:58
· 3 commits to main since this release
a5533f1

Authorization, program analysis, knowledge graphs, and the chase.

  • Three new lessons (numbered 20–22, so existing lesson links are unchanged):
    • 20, Authorization: Zanzibar-style relationship-based access, --explain as an audit trail, why listing everyone with access costs more than checking one user, a revocation list that fails open when empty, and Biscuit-style tokens.
    • 21, Program analysis: points-to and the call graph in one fixpoint, and a taint analysis whose false positive --explain traces.
    • 22, Knowledge graphs: RDFS, OWL 2 RL, existential rules and the chase, and owl:sameAs as the bridge to union-find and egglog.
  • Lesson 0 gains "One language, many dialects": one program in Soufflé, Datomic, Mangle, Logica and SQL, with a comparison table.
  • tiny_datalog.chase and a new tiny-datalog-chase command: rules whose head mentions a value the body doesn't name invent unknown values (labelled nulls). It offers the restricted and oblivious chase, checks before running whether the rules are guaranteed to stop and names the cycle if not, has a --max-nulls budget, and marks answers that aren't certain.
  • Eight new example programs, plus exercises with answers for the three lessons.

Fix: when a fact could be derived several ways, --explain printed a tree that could change from run to run. It now always picks the same one.

326 tests.