Skip to content

0.4.120

Latest

Choose a tag to compare

@TimoKramer TimoKramer released this 14 Mar 19:07
1013771
Feature/fast iteration (#5)

* Add lookupGE, ForwardCursor, and Seq leaf-safe optimization

lookupGE: O(log n) ceiling lookup with zero allocations. Returns the
first stored element >= key, or nil.

ForwardCursor: mutable forward-only cursor for efficient sequential
ceiling lookups. Amortized O(1) per seekGE when keys arrive in
ascending order. Supports next() for O(1) sequential advance and
current() for non-advancing read. 

Seq leafSafe: skips per-element comparator bounds check when the
entire current leaf is within the iteration range.

Also adds searchFirstFrom to ANode (binary search with lower bound
hint) and CLJS lookup-ge support.

* Fix CLJS type inference warnings in branch and btset

Add ^Branch type hints to merge/merge-split params, ^BTSet to helper
functions, and ^js/^BTSet to seek's seq field access to eliminate
"Cannot infer target type" warnings during CLJS compilation.

* Remove lookupGE/ForwardCursor from public Clojure API

Keep Java methods for internal use by datahike but do not expose
them in the Clojure namespace. Mark lookupGE, ForwardCursor, and
forwardCursor() as internal API subject to change in Javadoc.

Tests updated to use interop directly via a local helper.