Releases: imattau/polypack
Release list
v2.4.7
Added
- New
polypack-graphcrate: a pure-Rust port ofPolyGraph's public API
on top ofpolypack-core, for applications that need the graph engine
without a JS runtime. Covers node/edge CRUD with owned/shared
cascade-delete semantics, the flush/warm/save/clear/dispose/prune
persistence lifecycle, hot-cache eviction backed by an O(1) LRU list,
theGraphQuery/PersistedGraphQueryfluent query builders (including
joins, traversal, similarity ranking, and grouping/aggregation), and
pluggable text embeddings (EmbeddingProvider,FeatureHashEmbedding,
verified bit-for-bit identical to the TypeScript implementation) with
add_node_with_embedding/query_text/search_nodeswired through.
Published to crates.io alongsidepolypack-core.
Fixed
- Resolved
cargo clippy --all-targets -D warningsfailures in the new
polypack-graphcrate that were blocking CI: type-complexity on several
dyn Fnclosure fields (factored into type aliases), a needless
.clone()on theCopyHnswConfig, twosort_bycalls better
expressed assort_by_key, anif/elsewith identical bodies in
remove_edges's edge-index cleanup, and a manual modulo check now
expressed asu64::is_multiple_of. No behavior changes.
v2.4.6
Fixed
PolyGraph'screateVectorIndexconstructor hook was typed as
(onChange) => VectorIndex, soHNSWIndexand
@0xx0lostcause0xx0/polypack-native'sNativeVectorIndex/NativeHnswIndex
— the entire point of the hook — failed to type-check undertsc --strict
despite working at runtime, becauseVectorIndex's private fields give it
a nominal type brand. Introduced a structuralVectorIndexLikeinterface
(now exported from the package root) thatVectorIndexandHNSWIndex
both implement, and retypedPolyGraph.vectors/createVectorIndex
against it.MemoryAdapter'smaxNodescap was not actually LRU:applyChangesand
bulkPutNodesre-put an existing node via a rawMap.set(), which does
not move an existing key to the end of a JSMap's iteration order (only
putNode's delete-then-set did). SincePolyGraph.flush()/save()
preferapplyChangeswhen available, a frequently-updated node could
still be evicted as if untouched. Both paths now route through the same
touch-then-set helper asputNode.
Documentation
- README,
docs/API.md, and per-package docs (python/README.md,
crates/polypack-core/README.md,packages/node-native/README.md)
updated to cover all three distribution channels (npm, PyPI's
polypack-db, crates.io'spolypack-core) and to describe recent
additions (addNodes, adaptive compaction, secondary indexes,
createVectorIndex,HNSWIndex,markVectorDirty,VectorIndex.hydrate,
MemoryAdapter's eviction behavior). - Added missing JSDoc/rustdoc/docstrings across the TypeScript, Rust, and
Python public API surfaces, and merged three duplicate/leftover doc
comments found onSyncClient,SyncServer, andMemoryTransport.
Polypack 2.4.5
Fixed
get_edges_by_sources/get_edges_by_targetsin the RustStoretripped
clippy'sunnecessary_map_orlint (edge_type.map_or(true, |t| ...)→
edge_type.is_none_or(|t| ...)), which CI enforces as a hard error. No
behavior change.
See CHANGELOG.md for details.
Polypack 2.4.3
Version-only re-release of 2.4.2. @0xx0lostcause0xx0/polypack-native@2.4.2
was accidentally unpublished from npm during manual recovery from an OIDC
trusted-publisher outage; npm permanently blocks reusing an unpublished
name+version, so the whole stack moves to 2.4.3 to stay in lockstep. No
code changes beyond 2.4.2 — see CHANGELOG.md.
Polypack 2.4.2
Bug-fix release: Python graph deletion persistence, Rust WAL-before-mutation
ordering, atomic snapshot writes, and coordinated versioning across the
TypeScript, Rust, Python, and native npm packages (all now 2.4.2).
See CHANGELOG.md for details.
Polypack 2.4.1
Polypack 2.4.1 — coordinated multi-language release
- Browser-safe persistence subpaths (persistence/node, persistence/opfs)
- Conformance harness with recovery + query-plan fixtures
- Rust core (polypack-core 0.1.1): exact index, update-safe HNSW,
byte-compatible persistence state machine, query-plan executor - Node native NAPI-RS bindings (0.1.1) and Python PyO3 bindings
(polypack-db 0.1.1) - Fixed native matrix: macos-13 for darwin-x64
Polypack 2.4.0
Polypack 2.4.0 — multi-language core release
- Browser-safe persistence subpaths (
persistence/node,persistence/opfs) - Conformance harness with recovery + query-plan fixtures
- Rust core (
polypack-core): exact index, update-safe HNSW, byte-compatible
persistence state machine, query-plan executor - Node native NAPI-RS bindings and Python PyO3 bindings (abi3 wheel)
- Release hardening: per-platform npm packages, cross-platform CI, coordinated
release pipeline (release.yml) - Benchmark reports: go/no-go and in-memory query-gate
v2.3.0 — BinaryStoreAdapter
Replaced IndexedDBAdapter with BinaryStoreAdapter: MessagePack + WAL binary persistence. Fast writes via append-only WAL, fast reads from in-memory cache, and automatic compaction. Works in Node.js (fs) and browsers (OPFS).
v2.2.0
Polypack v2.1.0
Full Changelog: https://github.com/imattau/polypack/commits/v2.1.0