v0.6.0b1
Pre-release
Pre-release
What's Changed
- bench: multi-stage aggregate workload + Phase 6b decision by @jdrumgoole in #571
- docs: clean unloaded-machine benchmark baseline (writes ~1.4-1.6x mongod) by @jdrumgoole in #572
- docs: refresh benchmark.md to the post-raw-BSON clean baseline by @jdrumgoole in #574
- Rust server: WT eviction threads + larger log files (mongod-parity Phase 1) by @jdrumgoole in #575
- [security-warning] Security Review — 2026-07-20 by @github-actions[bot] in #576
- Rust server: zlib block compression — mongod-parity Phase 1.5 (+25% single-writer, ~2x scaling) by @jdrumgoole in #578
- docs: post-compression re-profile + honest scope of the remaining mongod gap by @jdrumgoole in #579
- docs: the oplog is the #1 mongod-parity bottleneck (A/B-proven) by @jdrumgoole in #581
- rust: make every collection/cursor/transaction lock poison-tolerant by @jdrumgoole in #583
- Rust + Python: sharded oplog + bounded prune — 1.77x single / 12x 8-writer writes by @jdrumgoole in #582
- ci: cargo-audit gate + stop dumping the full security-review transcript (I22, I23) by @jdrumgoole in #585
- harden three malformed-input paths (security review I1, I16, I21) by @jdrumgoole in #586
- changelog: correct the oplog-write numbers to a clean idle-machine A/B by @jdrumgoole in #589
- Python server: capped-collection eviction is now true FIFO by @jdrumgoole in #587
- docs: 8-writer profile pins the scaling bottleneck (WT block-manager on shared doc table) by @jdrumgoole in #591
- ci: capture crashed-worker faulthandler stacks as artifacts by @jdrumgoole in #590
- admin: change-stream tail detects client disconnect + bounds each poll by @jdrumgoole in #588
- [security-warning] Security Review — 2026-07-21 by @github-actions[bot] in #592
- Rust + Python: shard the documents table per collection (+19% at 4 concurrent writers) by @jdrumgoole in #594
- docs: forward plan for Rust->mongod write performance by @jdrumgoole in #596
- fix: multikey index keys for dotted paths into arrays by @jdrumgoole in #595
- test: release the admin app payload at fixture teardown (unbounded RSS growth) by @jdrumgoole in #597
- ci: crash-repro job needs the WiredTiger submodule by @jdrumgoole in #598
- ci: crash-repro must invoke the venv python directly, and fail on a broken harness by @jdrumgoole in #599
- fix: create_index must refresh its read snapshot before scanning by @jdrumgoole in #600
- ci: ws-single confirmation mode; record that the crash is NOT an OOM by @jdrumgoole in #601
- ci: ws-single must use -n0, and the guard must key on positive evidence by @jdrumgoole in #602
- docs: lock the mongod gap — parity not reachable (direct A/B verdict) by @jdrumgoole in #604
- fix(test): bound the websocket receives — this was the recurring worker death by @jdrumgoole in #603
- [security-warning] Security Review — 2026-07-22 by @github-actions[bot] in #606
- docs(backlog): complete the ws-crash record — open-race, cross-driver timeout, watchdog flake by @jdrumgoole in #607
- Rust server: disable WiredTiger log pre-allocation (stop CI disk exhaustion) by @jdrumgoole in #609
- test: cross-driver smokes need a pytest timeout above their build budget by @jdrumgoole in #605
- Rust server: checkpoint on clean shutdown (durable-mode parity with Python) by @jdrumgoole in #610
- Rust server: raw-BSON write path for inserts (~+11% single-writer) by @jdrumgoole in #608
- Security Review — 2026-07-23 [security-clean] by @github-actions[bot] in #611
- Rust daemon: default WAL log file_max to 2GB (~+13-19% write throughput) by @jdrumgoole in #612
- Ops Board: local web app to drive build/test/release for all servers (Phase 1+2) by @jdrumgoole in #615
- opsboard task: pass through --host / --config / --save by @jdrumgoole in #616
- Ops Board: graphical job progress bars + full process-tree cancel by @jdrumgoole in #617
- Ops Board: per-task info dialogs with detail + time estimates by @jdrumgoole in #619
- fix(jobkit): don't lose a fast child's output from the pty tee by @jdrumgoole in #620
- test: fix crash-watchdog flake under the full parallel suite by @jdrumgoole in #614
- test: name the lost documents when an index build races writes by @jdrumgoole in #624
- Rust storage: RecordId doc-table keying (step 1, 4→3 write-amp) by @jdrumgoole in #613
- ci: cache cargo registry + target for the Rust jobs by @jdrumgoole in #618
- docs: Ops Board page (Phase 6) by @jdrumgoole in #627
- chore: lock the opsboard extra; mark the Ops Board plan complete by @jdrumgoole in #629
- Ops Board: show gauge scores on the matrix by @jdrumgoole in #630
- Ops Board: origin flags, CI dispatch, and a running/history split by @jdrumgoole in #631
- fix(storage): give index DDL the collection lock, and fix an AB-BA lock order by @jdrumgoole in #632
- docs(recordid): record the measured cost of step 1's extra index hop by @jdrumgoole in #633
- [security-warning] Security Review — 2026-07-24 by @github-actions[bot] in #634
- docs: catch the Ops Board page up with the post-Phase-6 features by @jdrumgoole in #636
- storage: oplog prune reads O(deleted), not O(oplog size) by @jdrumgoole in #638
- pymongo gauge: --jobs N parallel runs with a server per worker by @jdrumgoole in #623
- docs(perf): re-baseline concurrency after RecordId — lock-split is done, ceiling is WiredTiger by @jdrumgoole in #639
- Rust storage: RecordId step 2 — index entries carry the RecordId (removes the IXSCAN hop) by @jdrumgoole in #637
- Rust storage: RecordId step 3 — capped tailable cursor tracks RecordId, not id_key by @jdrumgoole in #640
- docs: refresh benchmark numbers to the post-RecordId baseline by @jdrumgoole in #641
- Rust storage: stop the oplog re-encoding documents it already has (writes → mongod parity) by @jdrumgoole in #642
- [security-warning] Security Review — 2026-07-25 by @github-actions[bot] in #644
- Rust storage: async/decoupled oplog (opt-in) — backpressured, with the WT-write-ceiling finding by @jdrumgoole in #645
- docs(perf): the concurrency ceiling is the shared oplog, not generic WiredTiger by @jdrumgoole in #643
- Rust storage: SECANTUS_WT_CONFIG_EXTRA tuning hook + WT write-ceiling sweep (Finding 6) by @jdrumgoole in #646
- RecordId step 4a: the Python doc table is keyed by RecordId by @jdrumgoole in #647
- RecordId step 4b: Python index entries carry the RecordId by @jdrumgoole in #650
- RecordId step 4c: the Python tailable cursor tracks RecordId, not id_key by @jdrumgoole in #649
- docs(perf): refresh the benchmark figures after the RecordId change by @jdrumgoole in #651
- changelog: fold RecordId Python-migration fragments into 0.6.0b1 by @jdrumgoole in #652
- tests: serialise crash-watchdog nested runs with a file lock by @jdrumgoole in #653
- tests: load-tolerant timeout for rust-binary PITR restore by @jdrumgoole in #654
- tests: prefer release secantusd-rs binary over debug (fixes PITR timeout flake) by @jdrumgoole in #655
Full Changelog: v0.6.0b0...v0.6.0b1