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.

Blog

Updates, design notes, and deep dives from the SecantusDB project.

  • secantus-pg 0.1.0-beta.7 and secantus-mdb 0.5.3-beta.175: one sync covers every commit already written

    10 October 2026 · Joe Drumgoole

    Summary: secantus-pg 0.1.0-beta.7 and secantus-mdb 0.5.3-beta.175 share a WiredTiger change that lets one log sync cover every commit written before it, which makes durable writes on Linux 10 to 18 percent faster at eight and sixteen clients. The MongoDB server also gets read-only views …

  • secantus-pg 0.1.0-beta.6 makes durable writes on Linux about half again as fast

    9 October 2026 · Joe Drumgoole

    Summary: secantus-pg 0.1.0-beta.6 zero-fills its log on Linux, reuses the plan of a prepared write into a bigint column, and allocates with mimalloc. Durable writes on Linux go from about 2 to 2.4 times slower than PostgreSQL to 1.3 to 1.7 times through eight …

  • secantus-pg 0.1.0-beta.5 no longer drops a cancel that arrives early

    9 October 2026 · Joe Drumgoole

    Summary: secantus-pg 0.1.0-beta.5 keeps a CancelRequest that arrives while a statement is still being parsed, bound or described. Earlier releases dropped it and ran the statement to the end.

    A query timeout in a PostgreSQL client is usually a cancel: the client opens a second connection and …

  • secantus-mdb 0.5.3-beta.174 restores natural-order sorts on find

    9 October 2026 · Joe Drumgoole

    Summary: secantus-mdb 0.5.3-beta.174 fixes find().sort("$natural", ...), which 0.5.3-beta.173 refused with an error, and findAndModify with a $natural sort, which acted on the wrong document.

    If you run secantusd-rs 0.5.3-beta.173, upgrade. That release refused every find sorted in natural order:

    coll …
  • secantus-pg 0.1.0-beta.4 fixes a wrong result from prepared statements

    9 October 2026 · Joe Drumgoole

    Summary: secantus-pg 0.1.0-beta.4 fixes a prepared statement that could return the wrong row in 0.1.0-beta.3, holds smallint to its range, and reuses the plan of a prepared INSERT or UPDATE.

    If you run secantusd-pg 0.1.0-beta.3, upgrade. That release could return the …

  • The `cargo install` instructions now work

    8 October 2026 · Joe Drumgoole

    Summary: The cargo install instructions now work (v0.7.0b2).

    Every place that told you how to install a Rust server from crates.io printed cargo install secantus-mdb, and that command fails. Both crates carry a 0.0.0 name-reservation release and every real release is a pre-release, so cargo …

  • The Rust PostgreSQL server is on crates.io

    8 October 2026 · Joe Drumgoole

    Summary: secantus-pg 0.1.0-beta.3 is the PostgreSQL server's first crates.io release, alongside secantus-mdb 0.5.3-beta.173.

    cargo install secantus-pg --version 0.1.0-beta.3 now builds secantusd-pg, the Rust PostgreSQL server, from crates.io. Until this release the choices were a prebuilt archive for Linux x86_64 …

  • The source distribution is back under PyPI's file-size limit

    8 October 2026 · Joe Drumgoole

    Summary: The source distribution is back under PyPI's file-size limit (v0.7.0b1).

    0.7.0b0 reached PyPI as wheels only. Its source distribution came out at 573 MB, against 14 MB for 0.6.0b17, and PyPI refuses any file over 100 MB. A cargo build directory, crates/secantus-storage …

  • The PyPI package is the Python servers; the Rust servers ship as crates

    7 October 2026 · Joe Drumgoole

    Summary: The PyPI package is the Python servers; the Rust servers ship as crates (v0.7.0b0).

    pip install SecantusDB now installs the two Python reference servers (MongoDB and PostgreSQL) and WiredTiger, and nothing else. The Rust servers no longer ride inside the wheel. The Rust MongoDB server is the …

  • The errors are the feature

    26 September 2026 · Joe Drumgoole

    Summary: The errors are the feature (v0.6.0b17).

    For three weeks the work was almost entirely about what SecantusDB says when something is wrong. Rejecting a malformed command is easy; rejecting it the way mongod does — same code, same message, validated in the same order, so a driver's own …