Cozo 0.5: the versatile embeddable graph database with Datalog is half-way 1.0#

It’s been a quarter of a year since Cozo’s initial release and today we are glad to present to you the “half-way 1.0” version. This marks the completion of all the features we envisaged for Cozo when we first started but weren’t present in the initial release:

  • User-defined fixed rules (added in v0.5)

  • Callbacks for mutation (added in v0.5)

  • Multi-statement transaction (added in v0.5)

  • Indices (added in v0.5)

  • Imperative mini-language (added in v0.5)

  • Time-travelling (added in v0.4)

  • Swappable backend (added in v0.2)

In addition, v0.5 brings major behind-the-scene changes that has big performance benefits:

  • The semi-naive algorithm for executing queries is now executed in parallel for each Horn-clause (now it is even more advisable to split your queries into smaller pieces–better readability and performance!)

  • The evaluation of expressions is no longer interpreted but instead through stack-based bytecodes (a few percent improvements for filter-heavy queries–the improvement mainly comes from the avoidance of memory allocations)

From now on, until version 1.0, development will “shift-gear” to focus on:

  • stability

  • performance

  • interoperability with other software, e.g.:

    • networkx for pythonic in-memory graph analytics

    • PyG in particular and pytorch in general for deep learning on graphs

    • plotly and dash for plotting and dashboards

If you find Cozo to be useful in your work, please send us feedbacks so that we can make Cozo better still!