Blog
Updates, design notes, and deep dives from the SecantusDB project.
-
Java gauge widens to 60 integration tests — write-error semantics get straightened out
Summary: Java gauge widens to 60 integration tests, write-error semantics get straightened out (v0.5.0b2).
The Java conformance gauge tripled in scope this release — from 19 tests across 5 driver-sync classes to 60 tests across 13 classes, including the unified-spec runners that exercise the wire-level command-logging / command-monitoring / connection-pool-logging protocols …
-
All five driver gauges are now genuine end-to-end SecantusDB tests
Summary: All five driver gauges are now genuine end-to-end SecantusDB tests (v0.5.0b1).
Until this release, four of our five "validated against the official driver test suites" gauges weren't actually testing SecantusDB. The Java, Node, and Ruby gauges ran the drivers' own pure-code subsets —
:bson:test,test/unit/, files … -
v0.4.0b2: SecantusDB enters beta
Summary: SecantusDB graduates from alpha to beta. The pymongo conformance gauge sits at 100.0%, the cross-driver matrix now covers 15 features across mongosh, Go, Node, and Java, and the functional surface has filled in enough — real session tracking, multikey indexes, custom and cluster role bundles, noop oplog heartbeats, malformed-BSON …
-
Wire-protocol robustness, cross-driver session smokes, and a 100%-honest gauge
Summary: Malformed BSON in command bodies now elicits a
BadValuereply instead of dropping the connection, sessions and cluster-role bundles get cross-driver smokes (mongosh + Node + Go + Java), and the pymongo conformance dashboard catches up to the gauge it was always passing — a clean 100.0% (v0.3.0a78).The wire …
-
Real session tracking, date densify, and a 100% pymongo gauge
Summary: Logical sessions are now real server-side state,
$densifywalks date ranges by week / day / hour / minute / second / millisecond, and the pymongo conformance gauge moves to a clean 100.0% (v0.3.0a77).startSession/endSessions/refreshSessionsare no longer no-op stubs. A new thread-safesecantus.sessions.SessionRegistrytracks logical sessions … -
Change-stream split events + four cluster role bundles
Summary: Opt-in
splitEventenvelope on every change-stream event and four documented mongod cluster role bundles —clusterMonitor,clusterAdmin,backup,restore— join the built-in role set (v0.3.0a76).The
splitLargeChangeStreamEventsoption now stamps asplitEvent: {fragment: 1, of: 1}envelope on every change-stream event — insert, update, delete, replace, invalidate. Without the … -
Multikey indexes: array fields are now IXSCAN-fast
Summary: Indexes on array-valued fields now use per-element entries, so
{tags: "python"}against{tags: ["python", "go"]}lands at IXSCAN instead of falling back to a full collection scan (v0.3.0a75).Before v0.3.0a75, the moment any document on an indexed field carried an array value, SecantusDB flagged the …
-
Compound-index $lookup + Java smoke matrix
Summary: $lookup now exploits compound non-multikey indexes whose leading field matches
foreignField, and the Java cross-driver smoke matrix is complete (v0.3.0a74).v0.3.0a74 widens
$lookup's index-acceleration window. Previously the per-outer-doc IXSCAN path only fired when the foreign collection had a single-field index onforeignFieldexactly; otherwise … -
SASLprep arrives: SCRAM-SHA-256 now Unicode-correct
Summary: SASLprep on SCRAM-SHA-256 — non-ASCII passwords now Unicode-normalised before PBKDF2 (v0.3.0a73).
v0.3.0a73 brings SecantusDB's SCRAM-SHA-256 authentication into line with RFC 4013 by running passwords through SASLprep before they reach PBKDF2. The full stringprep pipeline lands:
B.1mapping (zero-width and other "to-nothing" code points stripped),NFKC … -
Change streams emit createIndexes/dropIndexes; updateUser command
Change streams emit createIndexes/dropIndexes; updateUser command (v0.3.0a52).