release-v1.8.8
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.0andnet9.0only. - 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 storesLiveBackupOptionsLiveBackupScheduleLocalLiveBackupProviderLiveBackupRestore- 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
Lockinstances 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
- Rewrite docs by @koculu in #136
- Add live backup and restore support. by @koculu in #137
- Drop older .NET version support - improve code quality by @koculu in #138
Full Changelog: release-v1.8.7...release-v1.8.8