Repository navigation
v0.7.3
O(1) snapshot resolution and complexity sweep
Summary
Eliminates all known O(N) hotspots across Dataset and Volume read/write paths. Cold-start Latest() on remote stores drops from ~30 minutes (5,800 manifests on R2) to ~2 seconds. No API changes; existing data is compatible without migration.
Highlights
- Persistent latest pointer: Datasets and Volumes write a
latestfile for O(1) cold-start resolution (1 Get instead of N manifest downloads) - Pointer-before-manifest protocol: Pointer write failure aborts the commit, eliminating stale pointer bugs across process restarts
- O(1)
Snapshot(ctx, id)on HiveLayout: Canonical manifest at the non-partitioned path replaces O(N) partition scan - O(log B) Volume block lookup: Binary search on sorted blocks replaces linear scan in
ReadAt - O(N + K log K) block merge: Merge-insert algorithm avoids re-sorting the full cumulative block set on each commit
- Optimized scan fallback:
latestByScanloads only the last manifest (1 List + 1 Get), self-heals by writing the pointer
Upgrade Notes
- No API changes — all improvements are internal and transparent
- No migration required — pre-v0.7.3 datasets and volumes work without modification
- Automatic self-healing — on first write after upgrade, the
latestpointer and canonical manifest (HiveLayout) are created automatically - Safe to upgrade from v0.7.2
References
Full Changelog: v0.7.2...v0.7.3
What's Changed
- refactor(test): ♻️ use b.Context() in benchmarks by @justapithecus in #112
- docs(v1): 📝 populate quarry dogfooding entry by @justapithecus in #113
- docs(meta): 📝 update CONTRIBUTING.md and fix LICENSE formatting by @justapithecus in #114
- feat(build): 🔧 add benchmarks, integration nightly, and yamllint by @justapithecus in #115
- feat(build): 📊 add benchstat tooling and statistical benchmark tasks by @justapithecus in #116
- docs(build): 📊 add CI benchmark results for cross-environment comparison by @justapithecus in #117
- perf(core): ⚡️ O(1) resolution and complexity sweep by @justapithecus in #127
- docs(meta): 📝 v0.7.3 changelog and README update by @justapithecus in #128
Full Changelog: v0.7.2...v0.7.3