Skip to content

release-v1.8.8

Choose a tag to compare

@koculu koculu released this 10 Jun 20:34
· 47 commits to main since this release
e5eee42

Highlights

This release introduces ZoneTree live backup support, a major documentation refresh, and a broad modernization of the codebase for newer .NET versions.

Breaking Changes

  • ZoneTree now targets net10.0 and net9.0 only.
  • Older .NET target frameworks have been removed to simplify maintenance and enable newer runtime and C# features.

New Features

Live Backup and Restore

Added a new ZoneTree.Backup subsystem for creating and restoring live backups.

using var backup = zoneTree.CreateLiveBackup(new LiveBackupOptions
{
    Store = new LocalLiveBackupProvider("backup/app"),
    Schedule = LiveBackupSchedule.Daily(
        new TimeOnly(2, 0),
        new TimeOnly(14, 0))
});

backup.Start();

See backup docs for more: https://github.com/koculu/ZoneTree/blob/main/docs/durability/backups.md

This includes:

  • CreateLiveBackup(...) extension methods for local-directory and custom backup stores
  • LiveBackupOptions
  • LiveBackupSchedule
  • LocalLiveBackupProvider
  • LiveBackupRestore
  • record-batch backup support for in-memory records
  • scheduled backup generations
  • configurable backup record compression
  • configurable concurrent file transfers

Live backups can include disk segments, bottom segments, and in-memory records, with support for both live and snapshot-style in-memory collection.

Expanded Documentation

Added a new documentation structure under docs/, covering:

  • getting started
  • reads and writes
  • iteration and range scans
  • transactions
  • maintenance
  • WAL modes
  • recovery
  • backups
  • compression
  • disk segment tuning
  • production checklist
  • troubleshooting
  • API overview
  • building systems on ZoneTree

Improvements

  • Improved operation-index documentation and clarified its role as a per-key freshness token.
  • Added iterator options for including deleted records and controlling whether iterator reads contribute to the block cache.
  • Replaced weak-identity locking patterns with explicit Lock instances throughout the core, WAL, transaction, backup, logger, and file-provider paths.
  • Improved analyzer compliance by replacing broad suppressions with targeted suppressions.
  • Modernized argument validation with newer .NET guard APIs.
  • Improved metadata serialization by relying on source-generated JSON serialization.
  • Improved in-memory file stream provider synchronization and path handling.
  • Improved backup-related disk segment collection and restore metadata generation.

Fixes and Reliability

  • Added regression coverage for WAL maximum operation index handling.
  • Added tests for stale metadata checkpoint recovery.
  • Added tests for compressed WAL stream tail and incomplete-block behavior.
  • Added tests for transaction rollback and incremental history behavior.
  • Added tests for live backup generation and restore behavior.
  • Added disk segment factory tests.
  • Strengthened iterator, replication, count, transaction, and BTree concurrency test coverage.

Documentation and Cleanup

  • Reworked the README and moved detailed guides into the new docs/ tree.
  • Removed older DocFX-style documentation files.
  • Normalized formatting, indentation, BOM usage, and final newlines across source, playground, and test projects.
  • Cleaned up benchmark and playground code formatting.

Upgrade Notes

Projects targeting older frameworks must move to net9.0 or newer before upgrading to this release.

Users who rely on backup or replication scenarios should review the new operation-index and backup documentation, especially around live backup generation, restore behavior, and per-key freshness semantics.

Pull Requests

Full Changelog: release-v1.8.7...release-v1.8.8