chore: release datawal 0.1.4 (first non-alpha)#30
Merged
Conversation
Cuts the first non-alpha release of datawal. The version jump from 0.1.0-alpha.1 directly to 0.1.4 (skipping 0.1.1 / 0.1.2 / 0.1.3) is intentional: each PR in the kit was a quality increment, not a hotfix, and the 'alpha' qualifier is dropped now that the crate has been validated in active use. Changes in this PR: - Cargo.toml: workspace.package.version 0.1.0-alpha.1 -> 0.1.4. - Cargo.lock: regenerated by cargo with the new version. - CHANGELOG.md (new): documents the 0.1.4 surface (record-level lazy iterator on RecordLog, RecordLogReader, keydir-by-offset, poison writer + is_poisoned, datawal CLI with 8 subcommands) and the alpha history. - README.md: adds the 'first non-alpha release' disclaimer agreed in the kit plan. - docs/benchmarks/v0.1.4-reference.md (new): release-quality benchmark report, scaffold only. Numbers are TBD pending a real-hardware run on the dia host (Micron T700 PLP); the file is checked in so the release PR can be opened and reviewed without blocking on bench scheduling. The v0.1.4 tag MUST NOT be pushed until the benchmark file is updated with real numbers; the tag-push triggers publication to crates.io, and a release without honest bench numbers would undermine the disclaimer in README. No code changes. No public-surface change. No MSRV change. No wire-format change. Closes the 8-PR 0.1.4 quality kit (PRs #23, #24, #25, #26, #27, #28, #29 already merged; this is #26 of the kit plan). Refs #18 (kit umbrella tracking issue; closed by PR #29).
Replaces the TBD scaffold in docs/benchmarks/v0.1.4-reference.md with the numbers from the criterion run on the dia host (DATAWAL_BENCH_DIR on ext4 with relatime,discard, NVMe-PLP). Stack: ext4 with relatime,discard, on a single NVMe-PLP raw fsync(64B) median 1785 us, p10 1720 us, p90 1858 us Highlights vs alpha (where comparable): - append_no_fsync: ~same as alpha (codec path unchanged). - append_fsync_each: ~1.78 ms (alpha reported ~3.7 us; see below). - datawal_get: ~700-780 ns (alpha ~30-46 ns). Expected: PR #28 keydir-by-offset adds one pread + CRC32C verify per get. - datawal_open_rebuild: ~25.6 ms at 100k (alpha ~39 ms). Faster by design: offset-keydir does not materialise values on replay. - compact_to: 3-9x slower than alpha. Two factors, both expected: (1) real-fsync floor, (2) PR #28 re-reads each live value via fd-pool LRU instead of copying from memory. Bench-dir caveat (the reason the alpha numbers differed so much in fsync-bearing tables): a raw-fsync sanity check on the same machine gave 0.59 us on tmpfs vs 1785 us on ext4. The alpha-reference single-digit-microsecond fsyncs are only consistent with a tmpfs bench dir (i.e. DATAWAL_BENCH_DIR unset, defaulting to /tmp). The v0.1.4 run was collected with DATAWAL_BENCH_DIR pointing at the real ext4 mount, so the new numbers reflect honest durability costs. A retrospective note has been added at the top of v0.1.0-alpha-reference.md flagging this; historical numbers in that doc are kept verbatim as a record of what was published. Code in this PR: docs only. No source / config / Cargo.* changes. The release/0.1.4 branch is now ready for merge + tag v0.1.4 push once the rest of the PR review wraps.
The v0.1.0-alpha-reference.md document reported single-digit microsecond fsync latencies that were inconsistent with the ZFS-on-NVMe stack described in its own Stack table. A raw-fsync sanity check on the same machine confirmed: ~0.59 us on tmpfs, ~1785 us on real ext4. The alpha numbers are consistent with a tmpfs bench directory (DATAWAL_BENCH_DIR unset, defaulting to /tmp), not the documented hardware path. Rather than keep a doc that quietly misrepresents the cost of durable writes, this commit deletes it. v0.1.4-reference.md (with real ext4-NVMe numbers + the raw-fsync sanity check disclosed) supersedes it. Changes: - docs/benchmarks/v0.1.0-alpha-reference.md: deleted (223 lines). - README.md, docs/benchmarks.md: repoint the 'reference run' link from v0.1.0-alpha-reference to v0.1.4-reference. - docs/benchmarks/v0.1.4-reference.md: drop the now-orphan 'How this differs from the alpha reference' section and the in-table 'slower/faster than alpha' phrasings; the doc now stands on its own as the canonical reference. The Stack section keeps the raw-fsync sanity-check numbers (tmpfs vs ext4) so any reader who finds a stale link or has cached copy of the alpha numbers can see the reason.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
First non-alpha release of
datawal. Promotes0.1.0-alpha.1directly to0.1.4, dropping thealphaqualifier and skipping0.1.1/0.1.2/0.1.3(intentional: each PR in the kit was a quality increment, not a hotfix).This is the 8th and closing PR of the
0.1.4quality kit. The 7 PRs already merged intomainsince0.1.0-alpha.1:RecordLog::scan_iter(record-level lazy iterator)d66e960scan/get/report/verify/dump)34a5a89(merge)ce74484b69071eRecordLogReader(lockless reader) +formal/ReadWhileWrite.tla0d3cae8getef1530fexport/compact/checkae50f8fWhat changed in this PR
Cargo.toml:workspace.package.version 0.1.0-alpha.1 -> 0.1.4.Cargo.lock: regenerated.CHANGELOG.md(new): documents the0.1.4surface and the alpha history.README.md: adds thefirst non-alpha releasedisclaimer agreed in the kit plan.docs/benchmarks/v0.1.4-reference.md(new): release-quality benchmark report. Numbers are TBD pending a real-hardware run on thediahost (Micron T700 PLP). The file is checked in so this PR can be reviewed without blocking on bench scheduling, but thev0.1.4tag MUST NOT be pushed until the benchmark file is updated with real numbers — the tag-push triggers publication to crates.io, and a release without honest bench numbers would undermine the disclaimer inREADME.md.No code changes. No public-surface change. No MSRV change. No wire-format change.
Local validation (6 gates green)
cargo fmt --all -- --checkcargo clippy --workspace --all-targets -- -D warningscargo test --workspace --all-targets(~150 tests, 0 failures; CLI suite 33 tests)RUSTDOCFLAGS='-D warnings' cargo doc --workspace --no-depscargo bench --workspace --no-runcargo publish --dry-run -p datawal --allow-dirtyMerge + release procedure
diahost (Micron T700 PLP) and amends / follow-up commits the real numbers intodocs/benchmarks/v0.1.4-reference.mdon this branch.main.v0.1.4tag pointing at the resultingmaincommit. The tag-gatedreleasejob in CI runscargo publish -p datawalagainst crates.io using theCARGO_REGISTRY_TOKENsecret.cargo add datawal --version 0.1.4).Closes / Refs
Closes the
0.1.4umbrella tracking (kit completion).Refs #18 (closed by PR #29).