Skip to content

v0.6.0

Choose a tag to compare

@justapithecus justapithecus released this 07 Feb 00:50
· 83 commits to main since this release
1145ee3

Dual persistence: Dataset + Volume

Summary

Introduces Volume as a second first-class persistence paradigm alongside Dataset. Volume provides sparse, resumable, range-addressable byte-space persistence with incremental commits and overflow-safe arithmetic throughout.

Highlights

  • NewVolume constructor with VolumeID, TotalLength, and optional WithVolumeChecksum
  • StageWriteAt / Commit / ReadAt for incremental block-level persistence
  • Cumulative snapshot manifests with strict overlap validation
  • Latest / Snapshots / Snapshot for Volume history access
  • ErrRangeMissing and ErrOverlappingBlocks error sentinels
  • Overflow-safe bounds checks across all Volume code paths

Breaking Changes

  • Snapshot → DatasetSnapshot, SnapshotID → DatasetSnapshotID
  • Reader → DatasetReader, NewReader → NewDatasetReader
  • SegmentRef → ManifestRef (Dataset), BlockRef (Volume)
  • ListSegments → ListManifests, SegmentListOptions → ManifestListOptions
  • ErrOverlappingSegments → ErrOverlappingBlocks
  • ErrOptionNotValidForReader → ErrOptionNotValidForDatasetReader

Upgrade Notes

  • All Dataset type renames are mechanical find-and-replace in consuming code
  • Volume is entirely additive — no changes needed if you only use Dataset
  • Volume uses a fixed internal layout; the Layout abstraction remains Dataset-specific

References

  • docs/contracts/CONTRACT_VOLUME.md
  • docs/contracts/CONTRACT_WRITE_API.md (concurrency matrices)
  • docs/contracts/CONTRACT_ERRORS.md (new sentinels)
  • examples/volume_sparse/

Full Changelog: v0.5.0...v0.6.0

What's Changed

  • docs(roadmap): 📝 add v0.6 volume contract + api plan by @justapithecus in #92
  • refactor(api): ♻️ rename Dataset/Reader types and add Volume type definitions by @justapithecus in #94
  • feat(volume): ✨ implement core Volume persistence by @justapithecus in #95
  • test(volume): ✅ add comprehensive Volume test suite by @justapithecus in #96
  • feat(examples): ✨ add sparse Volume ranges example by @justapithecus in #97
  • docs(volume): 📝 finalize Volume documentation and README refresh by @justapithecus in #98
  • docs: 📝 pre-v0.6.0 documentation audit fixes by @justapithecus in #99
  • fix(volume): 🐛 use overflow-safe arithmetic in bounds checks by @justapithecus in #100
  • docs(roadmap): 📝 mark Parquet and Volume Phase 6 deliverables complete by @justapithecus in #101

Full Changelog: v0.5.0...v0.6.0