Beta Past initial proving, but the Python API surface may still shift before 1.0. WiredTiger on-disk format is stable, but there's no migration tool yet — don't put production data here.

Say no like mongod: an operator-fidelity sweep, and a Rust server that clears every gauge

19 July 2026 · Joe Drumgoole · Releases

Summary: Say no like mongod: an operator-fidelity sweep, and a Rust server that clears every gauge (v0.6.0b0).

The single largest theme in this release is learning to fail correctly. Roughly sixty slices went through the query, update, and aggregation operators asking one question of each: when the argument is wrong, does SecantusDB raise the same error, with the same code, that mongod raises? Very often it did not — $all silently mis-matched a bad argument, $rename could corrupt a document, $concat quietly coerced non-strings, $bucket dropped out-of-range documents on the floor, and a long tail of operators leaked a raw Python exception to the wire. Those are now mongod-shaped errors with mongod's codes. Alongside the rejections, numeric fidelity got the same treatment: whole-number doubles are accepted where mongod accepts them, $toInt and $convert enforce int32/int64 overflow bounds, $mod matches on floats and bools, and $substrBytes is genuinely byte-based — including refusing a range that would split a UTF-8 character.

The Rust server crossed its headline milestone: it now clears all thirteen driver-conformance gauges, the same unmodified upstream suites the Python server runs. Getting there took both correctness work (MONGODB-X509 authentication, $project error fidelity, full $min/$max ordering) and a sustained performance push — writers no longer queue behind each other, reads no longer queue behind writers, oplog bookkeeping came off the write path, and four separate paths (scanning, filtering, projection, and the wire reply) now work over raw BSON instead of decoding whole documents just to re-encode them.

New surface landed too. $median and $percentile ship on both servers without a t-digest; $sum / $avg / $max / $min work as expression operators, not just accumulators; $toLong joins the conversion family; $jsonSchema grew mongod's full keyword surface; and expanded change-stream events now match mongod field-for-field. The SQL server kept its own pace with binary COPY, composite records end to end, binary and scrollable server-side cursors, DO blocks, savepoint rollback that reverts DDL, type modifiers on the wire, and idle_in_transaction_session_timeout. The admin console caught up with all three servers, the benchmark pages gained charts, and new concurrency stress suites found and fixed real races.

Full release notes on GitHub · Install from PyPI · Tag