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
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
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
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
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-rs0.5.3-beta.173, upgrade. That release refused everyfindsorted in natural order:coll … -
secantus-pg 0.1.0-beta.4 fixes a wrong result from prepared statements
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-pg0.1.0-beta.3, upgrade. That release could return the … -
The `cargo install` instructions now work
Summary: The
cargo installinstructions 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 a0.0.0name-reservation release and every real release is a pre-release, so cargo … -
The Rust PostgreSQL server is on crates.io
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.3now buildssecantusd-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
Summary: The source distribution is back under PyPI's file-size limit (v0.7.0b1).
0.7.0b0reached PyPI as wheels only. Its source distribution came out at 573 MB, against 14 MB for0.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
Summary: The PyPI package is the Python servers; the Rust servers ship as crates (v0.7.0b0).
pip install SecantusDBnow 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
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
mongoddoes — same code, same message, validated in the same order, so a driver's own …