Skip to content

v0.5.0

Choose a tag to compare

@prrao87 prrao87 released this 30 Oct 20:57
beae0c8

What's Changed

Breaking:

  • #88 (Python and Rust): the deprecated GraphConfigBuilder.with_node_label and with_relationship are removed, and in Rust with_relationship_endpoints too. Use node_table(label, primary_key) and rel_table(rel_type, from_table, to_table, src, dst).
  • #87 (Rust): CsrIndexBuilder::add_edge, Adjacency::build and with_changes, EdgeChanges and CsrExpandNode::try_new changed signatures. The Rust API is marked experimental, so expect more changes like this. The Python API is unaffected.

CSR:

  • #87: a hop that names its relationship, such as (a)-[k:KNOWS]->(b), stays on the CSR and fetches only the columns of k the query reads. Filters on those columns run inside the expansion. count(r) on a relationship now works. Refresh no longer needs the old dataset version, so compaction followed by cleanup_old_versions() applies as a delta instead of a rebuild. Building the CSR takes about 95 bytes per edge at peak and is about 1.35 times slower.
  • #94: a hop that fetches a large share of a Lance node table reads the target columns once instead of once per batch. In lazy mode, IC3 and IC9 are about 60% faster than in 0.4.0 (403 → 166 ms, 796 → 310 ms).
  • #93: csr_stats() reports base_version (the version of the last full build) and unindexed_edges (live edges outside the base CSR).

Known trade-off: IC5 is about 20% slower in memory mode than in 0.4.0 (79.8 → 95.7 ms), because its named hasMember hop now runs on the CSR. In lazy mode it's within 7% of 0.4.0 (104.0 → 111.1 ms). #92 tracks the fix.

Other: #85 (parallel Python tests), #90 (leaner Rust CI caches), #89 and #91 (Python and Rust tabs in the docs).

Benchmarks: both suites, both modes, against the 0.4.0 wheel from PyPI, on an Apple M5. Every query's answer matched.

PRs

  • test(python): run the test suite in parallel with pytest-xdist by @prrao87 in #85
  • refactor(config)!: remove deprecated with_node_label and with_relationship by @prrao87 in #88
  • docs: add python and rust tabs to the home page example by @prrao87 in #89
  • docs: rust tabs for getting started, keeping the csr fresh, sidebar order by @prrao87 in #91
  • ci: keep the rust caches lean and stop rebuilding for the example by @prrao87 in #90
  • feat(csr)!: keep named relationships on the csr with edge rows by @prrao87 in #87
  • feat(csr): report how far the base csr trails the data by @prrao87 in #93
  • perf(csr): read target columns once when a hop fetches much of a table by @prrao87 in #94
  • chore: bump version 0.4.0 → 0.5.0 by @prrao87 in #95

Full Changelog: v0.4.0...v0.5.0