v0.6.0b0
Pre-release
Pre-release
What's Changed
- docs: charts on the benchmark and concurrency pages by @jdrumgoole in #452
- tasks: Rust server performance profile findings by @jdrumgoole in #453
- tests: aggressive concurrency suites for the PG + Rust servers, fixing the races they caught by @jdrumgoole in #451
- rust server: close the small backlog residues — $project error fidelity, embedded WT knobs, full $min/$max order by @jdrumgoole in #454
- query: $jsonSchema grows mongod's full keyword surface and rejects what mongod rejects (both servers) by @jdrumgoole in #455
- aggregate: $median and $percentile land on both servers — no t-digest required by @jdrumgoole in #456
- expressions: log-family domain errors match mongod (both servers) by @jdrumgoole in #457
- change streams: expanded events match mongod field-for-field (both servers) by @jdrumgoole in #458
- Rust server: oplog bookkeeping off the hot paths by @jdrumgoole in #459
- Rust server: reads off the global storage lock by @jdrumgoole in #460
- rust server: X509 DN fidelity, Windows WT probe, R-tail audit + go gauge at 99.3% by @jdrumgoole in #461
- Rust server: per-collection write locks, statement transactions, write-conflict retry by @jdrumgoole in #462
- docs(R8): all thirteen driver gauges run against the Rust server — parity scoreboard by @jdrumgoole in #463
- query: $all against a scalar field now matches like mongod (both servers) by @jdrumgoole in #465
- query: range operators order embedded documents like mongod (both servers) by @jdrumgoole in #466
- query: range operators order arrays by full BSON type order (both servers) by @jdrumgoole in #467
- query: $mod matches mongod on floats, bools, and error cases (both servers) by @jdrumgoole in #468
- query: $size validates its argument like mongod (both servers) by @jdrumgoole in #469
- update: $inc/$mul reject a non-numeric argument, like mongod (both servers) by @jdrumgoole in #470
- update: $pop/$position/$slice/$bit reject a bool argument (both servers) by @jdrumgoole in #471
- aggregate: reject bool where a number is expected in expression ops (both servers) by @jdrumgoole in #472
- aggregate: $substrBytes rejects bool; $substr is byte-based like mongod by @jdrumgoole in #473
- aggregate: array-index ops accept a whole-number double, like mongod by @jdrumgoole in #474
- aggregate: $substrCP/$range/$round/$trunc accept a whole-number double by @jdrumgoole in #475
- aggregate: $substrBytes/$substr reject a byte range splitting a UTF-8 char by @jdrumgoole in #476
- aggregate: $substr* reject a negative index, like mongod by @jdrumgoole in #477
- aggregate: $substrBytes truncates a double index toward zero, like mongod by @jdrumgoole in #478
- aggregate: $limit / $skip validate their numeric argument, like mongod by @jdrumgoole in #479
- aggregate: $sample validates its size argument, like mongod by @jdrumgoole in #480
- test: fix awaitData drain-timeout collision flake by @jdrumgoole in #481
- query: $bits* validate their argument, like mongod by @jdrumgoole in #482
- expr: $pow no longer crashes on negative base + fractional exponent by @jdrumgoole in #483
- query: $gte/$lte:null match null+missing; $exists uses mongod truthiness by @jdrumgoole in #484
- update: $rename validates its spec instead of corrupting the document by @jdrumgoole in #485
- ci: shard the Linux lanes and unblock the critical path (~18 min → ~10 min) by @jdrumgoole in #486
- aggregate: $bucket errors on out-of-range value instead of dropping the doc by @jdrumgoole in #487
- expressions: $toInt / $convert enforce int32/int64 overflow bounds by @jdrumgoole in #489
- aggregate: $group accumulators stop coercing non-numeric values by @jdrumgoole in #491
- ci: add pytest-split and a per-platform durations recorder by @jdrumgoole in #488
- expressions: unary math ops reject non-numeric operands (28765/51081) by @jdrumgoole in #492
- expressions: $log rejects a non-numeric argument or base (28756/28757) by @jdrumgoole in #493
- query: $in / $nin validate their argument (BadValue) by @jdrumgoole in #494
- query: $regex / $options validate their arguments (51108/BadValue) by @jdrumgoole in #496
- query: $not and $elemMatch validate their arguments (BadValue) by @jdrumgoole in #497
- ci: correct a false claim in the durations recorder's rationale by @jdrumgoole in #495
- tests: fail fast with stacks when a worker crash wedges the controller by @jdrumgoole in #498
- query: $all validates its argument (BadValue) by @jdrumgoole in #499
- ci: run macOS on the weekly cron; correct the macOS rationale by @jdrumgoole in #490
- expressions: $split validates its arguments (40085/40086/40087/16020) by @jdrumgoole in #500
- ci: duration-balanced 3-way split replaces the sql/core glob shards by @jdrumgoole in #501
- aggregate: $sort stage validates its direction values (15974/15975/15976) by @jdrumgoole in #502
- ci: cache the cargo target dir in the storage-engine lane by @jdrumgoole in #503
- aggregate: $densify validates its range spec (6053600/14/5733401/5946802/…) by @jdrumgoole in #504
- aggregate: $facet validates its spec (40169/40170/40171/40600) by @jdrumgoole in #505
- projection: $slice validates its argument (28667/28724) by @jdrumgoole in #506
- ci: 4-way duration split, shortening the longest test group ~22% by @jdrumgoole in #507
- query: $type validates its argument and accepts whole-double codes (2/14) by @jdrumgoole in #508
- expressions: $concat rejects non-string operands (16702) by @jdrumgoole in #509
- tests: arm the stall watchdog unconditionally, not just after a crash by @jdrumgoole in #510
- build: stop rebuilding vendored WiredTiger on every build by @jdrumgoole in #512
- tasks: plan for caching the vendored WiredTiger build by @jdrumgoole in #511
- expressions: array operators reject a non-array input (34435/28664/…) by @jdrumgoole in #513
- tests: stop charging setup latency against the awaitData correctness check by @jdrumgoole in #514
- expressions: $trim / $ltrim / $rtrim validate input and chars (50699/50700) by @jdrumgoole in #515
- build: patch a private copy of WiredTiger, and stabilise the interpreter on Windows by @jdrumgoole in #516
- ci: cache the vendored WiredTiger build by @jdrumgoole in #517
- expressions: $indexOfBytes / $indexOfCP validate start / end index (40096/40097) by @jdrumgoole in #518
- expressions: $toDate rejects a bool instead of coercing it to a date (241) by @jdrumgoole in #519
- build: recover from a WiredTiger build dir predating the out-of-source switch by @jdrumgoole in #520
- expressions: $dateAdd / $dateSubtract / $dateTrunc validate integer args (5166405/5439017) by @jdrumgoole in #521
- ci: stop discarding the uv wheel cache between jobs by @jdrumgoole in #522
- ci: fix Windows CI — tool-cached Python instead of uv cache-python (os error 267) by @jdrumgoole in #524
- aggregate: $unwind validates path / includeArrayIndex / preserve (28808/28818/…) by @jdrumgoole in #523
- aggregate: validate $count / $project / $sortByCount stage arguments (40156/…/51272) by @jdrumgoole in #525
- aggregate/projection/update: validate $bucketAuto buckets, projection $elemMatch, $pull/$pullAll by @jdrumgoole in #526
- update: validate $push $sort direction, accept $currentDate boolean false by @jdrumgoole in #527
- update: validate arrayFilters (non-object/empty/bad-identifier/duplicate/unused) by @jdrumgoole in #528
- expressions: implement the $toLong conversion operator by @jdrumgoole in #529
- aggregate: validate $bucketAuto granularity (40261/40257), reject unsupported series by @jdrumgoole in #530
- update: extract arrayFilters identifiers nested in $and/$or/$nor by @jdrumgoole in #531
- expressions: mongod error codes for conversion / strLen / sortArray failures by @jdrumgoole in #532
- expressions: mongod error codes for $zip / $arrayToObject / $replace / $dateDiff by @jdrumgoole in #533
- docs: record $bucketAuto granularity rounding algorithm + 1-ULP blocker by @jdrumgoole in #534
- expressions: type-guard error codes for array/set/string operators (+ stop silent accepts) by @jdrumgoole in #535
- expressions: date/misc operator error codes (+ stop $dateToString/$dateDiff silent accepts) by @jdrumgoole in #536
- expressions: $sum/$avg/$max/$min as expression operators (MongoDB 5.0+) by @jdrumgoole in #537
- expressions(rust): $sum/$avg/$max/$min as expression operators on the Rust server by @jdrumgoole in #538
- expressions: $strcasecmp coerces operands like mongod ($toString; bool → 16007) by @jdrumgoole in #539
- ci: revert the uv wheel/python cache tuning (#522) by @jdrumgoole in #540
- ci: give each interpreter its own uv cache line by @jdrumgoole in #541
- docs: correct stale Rust matcher/update backlog entries (all verified done) by @jdrumgoole in #542
- SQL: RowDescription typmods, E-string fidelity, transaction characteristics by @jdrumgoole in #543
- Rust server: splice cursor batches onto the wire (raw-BSON reply, Phase 1) by @jdrumgoole in #545
- aggregate: $bucketAuto granularity boundary rounding (hex-exact, both servers) by @jdrumgoole in #544
- SQL: report IntervalStyle in the startup ParameterStatus by @jdrumgoole in #547
- test(storage): close WT before removing temp dir (fix WT_PANIC teardown noise) by @jdrumgoole in #546
- SQL: binary COPY, Parse-time inference, full array grammar, E-string fidelity by @jdrumgoole in #548
- admin: stop guessing what the Rust server can't do; close the feature gap by @jdrumgoole in #549
- tests: open change streams before writing to them by @jdrumgoole in #550
- SQL: composite records end to end, typed array parameters, NaN semantics by @jdrumgoole in #552
- Rust server: filter collection scans over raw BSON (Phase 2, ~2.8x on selective scans) by @jdrumgoole in #551
- tasks: record the unexplained WT-cache rebuild in the test lanes by @jdrumgoole in #557
- docs: admin console catches up with three servers; unbreak the docs build by @jdrumgoole in #554
- Rust server: project simple inclusions off raw BSON (Phase 3, ~2x on projected finds) by @jdrumgoole in #556
- test(ci): capture worker crashes immediately + fail fast on post-crash overrun by @jdrumgoole in #555
- SQL: DO blocks, backend termination, richer diagnostics, typed-param polish by @jdrumgoole in #558
- ci: build the docs, and stop cancelling main's own runs by @jdrumgoole in #559
- Rust server: match update/delete candidates over raw BSON (~4x on selective writes) by @jdrumgoole in #560
- SQL: binary and scrollable server-side cursors by @jdrumgoole in #561
- SQL: savepoint rollback reverts DDL; wide binary numerics round-trip by @jdrumgoole in #564
- test: close leaked Storage fixtures (fixes the CI worker-crash / macOS hang) by @jdrumgoole in #563
- SQL: idle_in_transaction_session_timeout by @jdrumgoole in #565
- Rust server: reduce an aggregation pipeline's pass-through prefix over raw BSON by @jdrumgoole in #566
- ci: pin the build interpreter so the WiredTiger cache is actually reusable by @jdrumgoole in #562
- ci: re-enable macOS on the push/PR test matrix by @jdrumgoole in #567
- docs: close backlog #275 — macOS hang resolved + confirmed by @jdrumgoole in #568
- tasks: mark the WT-cache rebuild question answered (#562) by @jdrumgoole in #569
- Rust server: decode only the fields a $group reads from wide docs (Phase 6a) by @jdrumgoole in #570
Full Changelog: v0.5.4b237...v0.6.0b0