Repository navigation
Releases: nazeeh111/DurableStore
Release list
DurableStore 0.2.0: atomic batches
Atomic batches let related keys change together. Store::write_batch and durablestore <directory> batch <file|-> commit ordered puts and deletes as one checksummed record with one synchronization.
- Recovery exposes every member or none. Complete malformed records fail without repair; incomplete final batches are discarded as a unit.
- CLI input is validated before opening the store. Files and standard input use tab-separated hexadecimal fields.
- Existing single-operation logs remain readable. Older binaries reject batch records without modifying them. Compaction writes ordinary put records for the final state.
scripts/batch_demo.pydemonstrates an outbox-state transition, reopening and compaction using disposable local data. It sends no messages.
CI 36340918304 passed on Linux and macOS, with minimum Rust 1.89 also passing the fault-injection suite. Default runs executed 29 unit/integration entries plus two documentation tests; fault-injection runs executed 35 plus two. Counts include subprocess helpers. Both platforms ran the batch demonstration and existing crash demonstration. Independent review added an 80-step mixed persisted-state model and old-reader/malformed-record checks.
Batches are limited to 1,024 operations and 32 MiB encoded payload, with the existing 1 MiB key and 16 MiB value limits. This is grouped writing, without interactive transactions, conditional updates or concurrent readers. Complete unacknowledged batches may survive. Process-crash checks do not establish physical power-loss safety; filesystem synchronization assumptions still apply.
Revision: 6bc7bb6a040a319fc5a06d3e600b58741160a2f9.
Source archive: 19 tracked files with matching bytes and executable modes. SHA-256: c1577a4008a3caf60868097e4331252e7c5d94222b4858614128b6fde41be471.
Extract and run cargo build --release --locked, then python3 scripts/batch_demo.py target/release/durablestore. Rust 1.89+ on Linux or macOS is required. No third-party Rust dependencies.