Skip to content

VivaceGraph 4.1.0

Latest

Choose a tag to compare

@kraison kraison released this 31 Oct 21:37

VivaceGraph 4.1.0 is a minor release: 98 changes since 4.0.1, no on-disk format change and no peer-protocol bump. 4.0.x stores open as they are. The full list is the [4.1.0] section of CHANGELOG.md.

New subsystems

  • graph-db/rules: claims as Prolog facts, rules as versioned producers that read a scope of stores and write their own, recursive rules (#304, #330, #331, #333).
  • graph-db/query: a web-free guarded query runner with paging and engine-side classification of cost-unbounded functors (#322, #387).

Spacetime claims

  • Edges under claims, the linking sweep and backfill, claim-endpoint (#367, #369, #372, #373).
  • Runtime twins of the schema macros: register-source, unregister-source, ensure-index, ensure-unique, :record-p (#378, #381).
  • def-count-index, a per-prefix counting index that sees the transaction's own writes (#361).
  • Claim-family vocabulary, canonical :check, claim-identity-key and its inverse, validate-transaction and validate-writes exported (#301, #303, #320, #321, #327, #350).
  • claims-touching and claims-by-producer paginate and take :as-of / :as-of-epoch (#300, #302, #347); a transaction reads its own claim writes (#324).

Engine

  • Node-local time travel: with-as-of and :as-of (#115).
  • A transaction sees its own writes through every index-backed read: spatial, vector segments, count index, index-count, map-index-prefixes, index-range (#92 family); a snapshot read never answers a node from a later commit.
  • Scan-and-write transactions can opt out of the retry cliff (#92); vector-search takes a :filter inside the top-K scan (#293); unique-lookup and reset-vector-segment are public.
  • B+ tree: byte-exact page splits, one lock per update, cursors that cross leaves by key and no longer cons a page per level (#404, #405).
  • Read/write statistics are sampled and in-memory id tables hash with a fixnum fold (#373).

Portability

  • ECL and CCL run the whole matrix: fixnum-width id folds (#424), CCL writer starvation in the rw-lock shim (#118), timed with-lock (#432), sparse shadow copies that read only the data extents (#434), %posix-allocated-size (#438), the sidecar reader (#436), rename-file over a live segment (#427).

Tooling and docs

  • tests/run-suite.sh SUITE (#407), tests/load-examples.sh with its CI lane (#417), the fast tier on pull requests (#340), docs/codebase-notes.md, the transaction contract in manual Chapter 5, the release flow in docs/ci.md (#403).

Dependencies

  • graph-db/spacetime requires cl-temporal-extent >= 0.3.0.