Skip to content

v0.24.1

Latest

Choose a tag to compare

@github-actions github-actions released this 18 Jul 11:51

v0.24.1 — correctness fixes, cache scalability, and an internal refactor

Two correctness fixes, a read-path scalability improvement, and a structural
split of the two largest source files. No storage-format change; no config change.

Correctness

  • toInteger() on an out-of-range or non-finite float now returns a clear error
    instead of silently saturating (1e19 became i64::MAX, NaN became 0).
    toIntegerOrNull() returns NULL for those same inputs, and toInteger("abc")
    stays NULL as before. The same guard closes the integer index-argument path
    (list.remove / list.insert / …), which had the identical trap.
  • The auto-consolidation log classifier branches on a typed error code rather
    than matching message text, so a benign "already in progress" single-flight
    race can never be mis-logged if the wording changes.

Performance

  • The query-result cache and the vector-index cache (resident PQ codes + the
    Vamana block LRU) now use a CLOCK second-chance eviction with a shared-read-lock
    hit path, instead of a global mutex that rewrote an ordered LRU on every hit.
    Concurrent cache hits no longer serialise: measured roughly 2x aggregate hit
    throughput across four threads, where the previous path fell below parity as
    cores were added. This brings both pools in line with the decompressed-block
    cache, which already had this design.

Internal (no behaviour change)

  • The Cypher executor and the Bolt server — the two largest files in the tree —
    are each carved into cohesive submodules: the executor Engine into
    exec/{access, driver, matchclause, proc, knn, traverse, scan, project, eval},
    and the server into server/{registry, conn, listen, handle, write,
    consolidate, query}. Pure relocations; the full test suite is unchanged.

Full Changelog: v0.24.0...v0.24.1