·
149 commits
to main
since this release
Immutable
release. Only release title and notes can be modified.
What's Changed
- Fix byzantine sender in replica by @dnkolegov-ar in #3343
- runtime/deterministic: reject pre-epoch start_time values by @commonware-llm in #3351
- [workspace] Remove
awsfeature fromdeployer's defaults by @clabby in #3349 - Fix panic in fixed_journal_operations.rs by @dnkolegov-ar in #3329
- [Storage] Define
Key,Valueassociated types on QMDB operation by @danlaine in #3341 - [storage/qmdb] support pipelined batch updates with commit (fsync) by @roberto-bayardo in #3337
- [reshare] Track validator progress across crash restarts by @clabby in #3354
- [Storage] Remove redundant type bounds by @danlaine in #3345
- [math] Implemnt lin_comb_eval method by @cronokirby in #3312
- [Storage] Consolidate QMDB traits by @danlaine in #3350
- [storage/mmr] create storage/merkle module, move mmr into it by @roberto-bayardo in #3355
- [Storage] Change generic types to associated types by @danlaine in #3368
- [consensus/simplex] Strengthen twins framework by @clabby in #3281
- [Storage] Simplify
mmr::Hasherby @danlaine in #3369 - [Storage] Remove
mmr::update_leafby @danlaine in #3372 - [workspace] Propagate
mocksfeature by @clabby in #3380 - [storage/mmr] folded root computation for smaller proofs by @roberto-bayardo in #3304
- [coding] Use the default minifuzz config where possible by @cronokirby in #3378
- [p2p/authenticated] Refactor Dial Jitter by @patrick-ogrady in #3379
- [consensus/coding] Prevent Proposer Withholding by @clabby in #3338
- [storage/fuzz] fix fuzz test panic from expected checksum invalidation by @roberto-bayardo in #3388
- CI: move benchmark name linting to benchmark running step by @cronokirby in #3218
- [storage/mmr] hash leaf count in last to avoid malleability concern by @roberto-bayardo in #3392
- [storage/mmr/journaled] Tweak Readable for journaled MMR by @roberto-bayardo in #3398
- [utils] Add Map::iter_pairs_mut by @cronokirby in #3407
- [Storage] Fix comment by @danlaine in #3406
- [consensus/simplex] Add policy to handle non-voters' block dissemination by @clabby in #3347
- [codec] Add implementations for
Range*<T>by @clabby in #3394 - [utils] Add
NonEmptyRangetype by @clabby in #3395 - [storage/mmr/journaled] support crash recovery in init_sync by @roberto-bayardo in #3399
- [ci] Auto-assign pull requests by @clabby in #3419
- [Storage] Make batch mutation methods consume/produce Self by @danlaine in #3371
- [coding] Clarify Scheme unique commitment guarantee by @cronokirby in #3425
- [Storage] Change
mmr::Hashermethods to take&selfinstead of&mut selfby @danlaine in #3382 - [consensus/simplex] Remove
nullifyafternullificationbehavior by @BrendanChou in #3424 - [Storage] Clean up qmdb benchmarks by @danlaine in #3426
- [storage/merkle] Introduce "merkle family" to allow MMR variants, implement MMR and (F-)MMB versions by @roberto-bayardo in #3363
- [docs] The Carnot Bound by @patrick-ogrady in #3436
- [Storage] Consolidate storage configs by @danlaine in #3430
- [consensus/simplex] Timeout Regression Tests by @patrick-ogrady in #3432
- [Storage] QMDB state sync: don't reset outstanding requests on target update by @danlaine in #3438
- [storage/qmdb] Coordinate state sync finalization by @clabby in #3439
- [cryptography] Implement Scalar::from(SmallScalar) by @cronokirby in #3408
- [macros] Respect
RUST_LOGintest_tracedby @clabby in #3447 - [storage/merkle] change pruning api to be location based instead of position by @roberto-bayardo in #3443
- [Storage] Deduplicate fixed/variable code by @danlaine in #3437
- DKG Finalization Optimizations by @cronokirby in #3328
- [runtime/iouring] implement timeouts in userspace by @andresilva in #3284
- [p2p]
IoBuf-driven Batching by @patrick-ogrady in #3431 - [runtime/iobuf] reduce buffer-pool hot-path overhead by @andresilva in #3360
- [runtime/utils/buffer/paged/append] zero-copy writes by @andresilva in #3434
- [runtime/tokio] don't box spawned tasks by @andresilva in #3455
- [storage/rmap]: add coverage for first/last index and max-boundary gaps by @voith in #3414
- [blogs] zkSNARKs by @patrick-ogrady in #3456
- [Storage] Allow batches to live longer than their base by @danlaine in #3400
- [workspace] rustfmt by @andresilva in #3457
- updated with reference to plonk by @guruvamsi-policharla in #3462
- [runtime/tokio] Simplify
sleep_untilby @patrick-ogrady in #3464 - [storage] Allow rewinding QMDB by @clabby in #3450
- [Storage] Add Context alias by @danlaine in #3451
- [runtime] Revert #3455 by @clabby in #3473
- [consensus::simplex] Add test that shows that gossiped certificates reach the reporter by @BrendanChou in #3472
- [scripts] make stability wrapper work with sccache by @andresilva in #3469
- [consensus::simplex] Improve
test_invalidtest by @BrendanChou in #3478 - [runtime/tokio] don't use deprecated set_linger by @andresilva in #3488
- [Storage] Add
append_manyjournal optimization by @danlaine in #3489 - [runtime] Fix Network Flake by @patrick-ogrady in #3494
- [coding/rs] Remove Intermediate Copy + Only Decode Live Bytes by @commonware-llm in #3496
- [Storage] Fix UintIdentity hasher defeating hashbrown's SIMD filter by @danlaine in #3480
- [runtime] avoid stack multiplication in Handle::init by @andresilva in #3487
- [runtime/iobuf/pool] allow flushing thread-local cache by @andresilva in #3482
- [storage/qmdb] Fix path-dependent key selection in
any::unorderedby @clabby in #3476 - [runtime/tokio] use system thread stack size for all threads by @andresilva in #3475
- [storage] make clippy happy by @andresilva in #3500
- [storage] further generify storage crate on merkle family by @roberto-bayardo in #3463
- [storage/merkle] reject empty proof with non-empty digests by @roberto-bayardo in #3506
- [stream] Tighten Frame Allocation during Handshake by @patrick-ogrady in #3508
- [runtime] Avoid recursive supervision teardown by @commonware-llm in #3484
- [Storage] Support variable-length keys in
qmdb::immutableby @danlaine in #3466 - [Storage] Deduplicate index creation and state sync implementations by @danlaine in #3452
- [Storage] [Utils] Optimize bitmap scan; add ones iterator by @danlaine in #3477
- [storage/qmdb/keyless] generalize keyless on merkle family by @roberto-bayardo in #3507
- [Storage] Support fixed-length values in
qmdb::immutableby @danlaine in #3461 - [Storage] Support fixed-length values in
qmdb::keylessby @danlaine in #3460 - [Storage] QMDB performance improvements by @danlaine in #3471
- [docs] How Things Work #6 by @patrick-ogrady in #3522
- [Storage] Fix
next_keycorruption when child batch deletes a key with collision siblings by @danlaine in #3515 - [storage/qmdb] default nodes_to_pin based on peak iteration by @roberto-bayardo in #3523
- [Codec] [Runtime] [p2p] Multi-buffer encoding for zero-copy of
Bytesfields by @danlaine in #3491 - [storage/qmdb/current/batch] cache cleared bits per chunk by @andresilva in #3521
- [Storage] Fix path-dependent operation ordering by @danlaine in #3541
- [Storage] Maintain weak parent pointer in batch by @danlaine in #3503
- [p2p] Support Primary/Secondary Peers by @patrick-ogrady in #3499
- [storage/qmdb/current] Bitmap chunk overlay by @roberto-bayardo in #3545
- [Storage] Use
append_manyto avoid lock re-grabs by @danlaine in #3553 - [Storage] Batch blob writes in contiguous journal append by @danlaine in #3559
- [marshal] Improve Crash Robustness by @patrick-ogrady in #3547
- [Storage] Rename segment to batch by @danlaine in #3561
- [Storage] Allow
authenticated::Journal::append_manycalls to take nested slices by @danlaine in #3560 - [Storage]
contiguous::Journal::append_manyreturns error on empty argument by @danlaine in #3562 - [storage/qmdb/current] Generalized grafting core to support current QMDB by @roberto-bayardo in #3514
- [storage/qmdb/current] fix pruned-chunk panic in root generation for current+mmb by @roberto-bayardo in #3567
- [storage/qmdb] merkleize benchmark for any + current qmdb by @roberto-bayardo in #3556
- [utils/bitmap] panic if the user tries to push an invalid trailing chunk by @roberto-bayardo in #3568
- [Storage] Pass thread pool to child batch in
merkle::journaledby @danlaine in #3569 - [Storage] Parallelize leaf hashing in authenticated batch merkleization by @danlaine in #3572
- [consensus/simplex] Cleanup variable naming by @patrick-ogrady in #3580
- [runtime/iouring] replace raw SQE submission with high-level requests by @andresilva in #3411
- [runtime] Review Attributes by @patrick-ogrady in #3583
- [consensus/simplex] Self-verify test by @clabby in #3551
- [storage/qmdb] add ordered variants, increase items per blob in merkleize benchmark by @roberto-bayardo in #3573
- [storage/qmdb] Batch reads in floor raising with page-cache fast path (Rebased on main) by @roberto-bayardo in #3576
- [consensus/marshal] Handle Pruning Race on Epocher/Verifier by @patrick-ogrady in #3589
- [runtime] Fix Sleep Retries by @patrick-ogrady in #3594
- [release] v2026.4.0 by @patrick-ogrady in #3595
Stats
.github/scripts/check_no_std.sh | 1 +
.github/scripts/lint_benchmark_names.py | 101 +-
.github/workflows/auto-assign.yml | 18 +
.github/workflows/benchmark.yml | 4 +-
.github/workflows/fast.yml | 14 -
.github/workflows/slow.yml | 2 +
AGENTS.md | 1 +
Cargo.lock | 83 +-
Cargo.toml | 44 +-
.../fuzz_targets/broadcast_engine_operations.rs | 25 +-
broadcast/src/buffered/config.rs | 3 +-
broadcast/src/buffered/engine.rs | 70 +-
broadcast/src/buffered/mod.rs | 433 ++-
codec/conformance.toml | 28 +
codec/src/codec.rs | 22 +
codec/src/types/btree_map.rs | 24 +-
codec/src/types/btree_set.rs | 19 +-
codec/src/types/bytes.rs | 13 +-
codec/src/types/hash_map.rs | 27 +-
codec/src/types/hash_set.rs | 23 +-
codec/src/types/lazy.rs | 22 +-
codec/src/types/mod.rs | 1 +
codec/src/types/primitives.rs | 17 +-
codec/src/types/range.rs | 362 +++
codec/src/types/tuple.rs | 12 +-
codec/src/types/vec.rs | 29 +-
coding/Cargo.toml | 11 +
coding/conformance.toml | 8 -
coding/fuzz/Cargo.toml | 7 -
coding/fuzz/fuzz_targets/no_coding.rs | 10 -
coding/fuzz/fuzz_targets/zoda.rs | 4 +-
coding/fuzz/src/lib.rs | 39 +-
coding/src/benches/bench.rs | 109 +-
coding/src/benches/bench_phased.rs | 147 +
coding/src/benches/bench_phased_size.rs | 56 +
coding/src/benches/bench_size.rs | 24 +-
coding/src/benches/shard_selection.rs | 43 +
coding/src/benches/zoda.rs | 6 +-
.../src/benches/{no_coding.rs => zoda_phased.rs} | 6 +-
coding/src/lib.rs | 669 +++-
coding/src/no_coding.rs | 154 -
coding/src/reed_solomon.rs | 366 ++-
coding/src/{zoda.rs => zoda/mod.rs} | 216 +-
coding/src/zoda/topology.rs | 157 +
collector/src/p2p/mod.rs | 12 +-
consensus/Cargo.toml | 6 +-
consensus/conformance.toml | 6 +-
consensus/fuzz/Cargo.toml | 2 +-
consensus/fuzz/src/lib.rs | 137 +-
consensus/src/aggregation/mod.rs | 8 +-
consensus/src/lib.rs | 22 +-
consensus/src/marshal/coding/marshaled.rs | 90 +-
consensus/src/marshal/coding/mod.rs | 119 +-
consensus/src/marshal/coding/shards/engine.rs | 2274 ++++++++-----
consensus/src/marshal/coding/shards/mailbox.rs | 32 +-
consensus/src/marshal/coding/types.rs | 228 +-
consensus/src/marshal/coding/variant.rs | 4 +-
consensus/src/marshal/config.rs | 23 +-
consensus/src/marshal/core/actor.rs | 102 +-
consensus/src/marshal/core/cache.rs | 12 +
consensus/src/marshal/core/mailbox.rs | 22 +
consensus/src/marshal/core/variant.rs | 17 +-
consensus/src/marshal/mocks/application.rs | 19 +-
consensus/src/marshal/mocks/harness.rs | 138 +-
consensus/src/marshal/resolver/p2p.rs | 2 +
consensus/src/marshal/standard/deferred.rs | 76 +-
consensus/src/marshal/standard/inline.rs | 326 +-
consensus/src/marshal/standard/mod.rs | 1101 ++++++-
consensus/src/marshal/standard/variant.rs | 5 +-
consensus/src/marshal/store.rs | 27 +
consensus/src/ordered_broadcast/config.rs | 2 +-
consensus/src/ordered_broadcast/engine.rs | 6 +-
consensus/src/ordered_broadcast/mocks/automaton.rs | 5 +-
consensus/src/ordered_broadcast/mod.rs | 24 +-
consensus/src/simplex/actors/batcher/actor.rs | 175 +-
consensus/src/simplex/actors/batcher/ingress.rs | 8 +-
consensus/src/simplex/actors/batcher/mod.rs | 1956 ++++++++++--
consensus/src/simplex/actors/batcher/round.rs | 52 +-
consensus/src/simplex/actors/voter/actor.rs | 36 +-
consensus/src/simplex/actors/voter/mod.rs | 1787 +++++++----
consensus/src/simplex/actors/voter/round.rs | 161 +-
consensus/src/simplex/actors/voter/slot.rs | 53 +-
consensus/src/simplex/actors/voter/state.rs | 197 +-
consensus/src/simplex/config.rs | 37 +-
consensus/src/simplex/engine.rs | 13 +-
consensus/src/simplex/mocks/application.rs | 40 +-
consensus/src/simplex/mocks/mod.rs | 2 +
consensus/src/simplex/mocks/reporter.rs | 46 +-
consensus/src/simplex/mocks/scheme.rs | 6 +
consensus/src/simplex/mocks/twins.rs | 1467 +++++++--
consensus/src/simplex/mocks/wrapped.rs | 288 ++
consensus/src/simplex/mod.rs | 1864 ++++++-----
cryptography/src/bls12381/benches/dkg.rs | 34 +-
cryptography/src/bls12381/dkg.rs | 660 +++-
cryptography/src/bls12381/primitives/group.rs | 20 +
cryptography/src/bls12381/scheme.rs | 6 +
cryptography/src/certificate.rs | 18 +-
cryptography/src/certificate/mocks.rs | 1183 +++++++
cryptography/src/ed25519/scheme.rs | 6 +
cryptography/src/transcript.rs | 80 +-
deployer/Cargo.toml | 5 +-
docs/blogs/batch-pari.html | 352 +++
docs/blogs/batch-pari.md | 92 +
docs/blogs/carnot-bound.html | 201 ++
docs/blogs/carnot-bound.md | 46 +
docs/blogs/is-it-ready-yet.html | 6 +-
docs/blogs/its-a-grind.html | 6 +-
docs/blogs/zoda.html | 8 +-
docs/imgs/batch-pari.png | Bin 0 -> 55717 bytes
docs/imgs/carnot-algo-1.png | Bin 0 -> 210793 bytes
docs/imgs/carnot-algo-2.png | Bin 0 -> 264620 bytes
docs/imgs/carnot-algo-3.png | Bin 0 -> 170341 bytes
docs/imgs/carnot-algo-4.png | Bin 0 -> 128160 bytes
docs/imgs/carnot.png | Bin 0 -> 79898 bytes
docs/index.html | 14 +-
docs/podcast.html | 51 +-
docs/style.css | 14 +
docs/template.html | 6 +-
examples/bridge/src/application/ingress.rs | 9 +-
examples/bridge/src/bin/validator.rs | 3 +-
examples/chat/src/main.rs | 2 +-
examples/estimator/src/main.rs | 54 +-
examples/flood/src/bin/flood.rs | 2 +-
examples/log/src/application/ingress.rs | 9 +-
examples/log/src/main.rs | 3 +-
examples/reshare/src/dkg/actor.rs | 87 +-
examples/reshare/src/dkg/state.rs | 12 +-
examples/reshare/src/engine.rs | 4 +-
examples/reshare/src/orchestrator/actor.rs | 9 +-
examples/reshare/src/validator.rs | 191 +-
examples/sync/src/bin/client.rs | 12 +-
examples/sync/src/bin/server.rs | 49 +-
examples/sync/src/databases/any.rs | 56 +-
examples/sync/src/databases/current.rs | 75 +-
examples/sync/src/databases/immutable.rs | 73 +-
examples/sync/src/databases/mod.rs | 31 +-
examples/sync/src/error.rs | 2 +-
examples/sync/src/net/mod.rs | 3 +
examples/sync/src/net/resolver.rs | 19 +-
examples/sync/src/net/wire.rs | 48 +-
justfile | 16 +-
macros/Cargo.toml | 2 +-
macros/impl/src/lib.rs | 37 +-
macros/src/lib.rs | 9 +-
math/src/algebra.rs | 85 +-
math/src/poly.rs | 91 +-
p2p/Cargo.toml | 1 +
p2p/fuzz/fuzz_targets/simulated.rs | 10 +-
p2p/fuzz/src/lib.rs | 22 +-
p2p/src/authenticated/data.rs | 10 +
p2p/src/authenticated/dialing.rs | 48 +
p2p/src/authenticated/discovery/actors/dialer.rs | 254 +-
.../authenticated/discovery/actors/peer/actor.rs | 197 +-
p2p/src/authenticated/discovery/actors/peer/mod.rs | 3 +-
.../discovery/actors/spawner/actor.rs | 5 +-
.../authenticated/discovery/actors/spawner/mod.rs | 3 +-
.../discovery/actors/tracker/actor.rs | 229 +-
.../actors/tracker/{set.rs => bit_set.rs} | 69 +-
.../discovery/actors/tracker/directory.rs | 902 +++++-
.../discovery/actors/tracker/ingress.rs | 38 +-
.../discovery/actors/tracker/metrics.rs | 4 +-
.../authenticated/discovery/actors/tracker/mod.rs | 9 +-
.../discovery/actors/tracker/record.rs | 530 ++--
p2p/src/authenticated/discovery/config.rs | 45 +-
p2p/src/authenticated/discovery/mod.rs | 194 +-
p2p/src/authenticated/discovery/network.rs | 5 +-
p2p/src/authenticated/lookup/actors/dialer.rs | 255 +-
p2p/src/authenticated/lookup/actors/peer/actor.rs | 319 +-
p2p/src/authenticated/lookup/actors/peer/mod.rs | 2 +
.../authenticated/lookup/actors/spawner/actor.rs | 4 +
p2p/src/authenticated/lookup/actors/spawner/mod.rs | 3 +
.../authenticated/lookup/actors/tracker/actor.rs | 306 +-
.../lookup/actors/tracker/directory.rs | 1352 ++++++--
.../authenticated/lookup/actors/tracker/ingress.rs | 38 +-
.../authenticated/lookup/actors/tracker/metrics.rs | 4 +-
p2p/src/authenticated/lookup/actors/tracker/mod.rs | 7 +-
.../authenticated/lookup/actors/tracker/record.rs | 529 ++--
p2p/src/authenticated/lookup/config.rs | 44 +-
p2p/src/authenticated/lookup/mod.rs | 164 +-
p2p/src/authenticated/lookup/network.rs | 5 +-
p2p/src/authenticated/mod.rs | 1 +
p2p/src/authenticated/relay.rs | 24 +
p2p/src/lib.rs | 156 +-
p2p/src/simulated/ingress.rs | 39 +-
p2p/src/simulated/mod.rs | 686 ++--
p2p/src/simulated/network.rs | 881 ++++--
p2p/src/utils/codec.rs | 24 +-
p2p/src/utils/mocks/mod.rs | 108 +
p2p/src/utils/mod.rs | 28 +-
p2p/src/utils/mux.rs | 13 +-
pipeline/minimmit/quint/replica.qnt | 5 +-
resolver/Cargo.toml | 2 +-
resolver/src/lib.rs | 3 +
resolver/src/p2p/config.rs | 4 +-
resolver/src/p2p/engine.rs | 10 +-
resolver/src/p2p/fetcher.rs | 9 +-
resolver/src/p2p/mocks/mod.rs | 1 +
resolver/src/p2p/mod.rs | 542 +++-
resolver/src/p2p/wire.rs | 71 +-
runtime/Cargo.toml | 5 +
runtime/src/deterministic.rs | 107 +-
runtime/src/iobuf/aligned.rs | 1204 +++++++
runtime/src/iobuf/benches/bench.rs | 45 +
runtime/src/iobuf/benches/pool.rs | 318 ++
runtime/src/iobuf/mod.rs | 843 ++++-
runtime/src/iobuf/pool.rs | 2198 ++++++-------
runtime/src/iouring/mod.rs | 2694 ++++++++++------
runtime/src/iouring/request.rs | 1517 +++++++++
runtime/src/iouring/timeout.rs | 1006 ++++++
runtime/src/iouring/waiter.rs | 964 ++++++
runtime/src/iouring/waker.rs | 369 +++
runtime/src/lib.rs | 301 +-
runtime/src/network/audited.rs | 104 +-
runtime/src/network/iouring.rs | 683 ++--
runtime/src/network/mod.rs | 170 +-
runtime/src/network/tokio.rs | 45 +-
runtime/src/storage/audited.rs | 73 +-
runtime/src/storage/iouring.rs | 781 +++--
runtime/src/tokio/runtime.rs | 273 +-
runtime/src/utils/buffer/benches/append.rs | 28 +-
runtime/src/utils/buffer/benches/bench.rs | 13 +-
runtime/src/utils/buffer/benches/read.rs | 33 +-
runtime/src/utils/buffer/paged/append.rs | 304 +-
runtime/src/utils/cell.rs | 24 +-
runtime/src/utils/handle.rs | 39 +-
runtime/src/utils/mod.rs | 2 +
runtime/src/utils/supervision.rs | 381 ++-
runtime/src/utils/thread.rs | 113 +
scripts/find_unstable_public.sh | 10 +-
scripts/rustc_stability_wrapper.sh | 11 +-
storage/Cargo.toml | 12 +-
storage/conformance.toml | 66 +-
storage/fuzz/Cargo.toml | 40 +-
.../fuzz/fuzz_targets/current_crash_recovery.rs | 84 +-
.../fuzz_targets/current_ordered_operations.rs | 59 +-
.../fuzz_targets/current_unordered_batch_root.rs | 200 ++
.../fuzz_targets/current_unordered_operations.rs | 59 +-
storage/fuzz/fuzz_targets/extract_pinned_nodes.rs | 38 -
.../fuzz/fuzz_targets/fixed_journal_operations.rs | 31 +-
.../fuzz/fuzz_targets/merkle_family_operations.rs | 326 ++
storage/fuzz/fuzz_targets/merkle_journaled.rs | 391 +++
...overy.rs => merkle_journaled_crash_recovery.rs} | 148 +-
storage/fuzz/fuzz_targets/mmr_bitmap.rs | 24 +-
storage/fuzz/fuzz_targets/mmr_journaled.rs | 382 ---
storage/fuzz/fuzz_targets/mmr_operations.rs | 351 ---
storage/fuzz/fuzz_targets/oversized_recovery.rs | 35 +-
storage/fuzz/fuzz_targets/proof_store.rs | 65 +-
storage/fuzz/fuzz_targets/proofs_malleability.rs | 44 +-
storage/fuzz/fuzz_targets/qmdb_any_fixed_sync.rs | 97 +-
.../fuzz/fuzz_targets/qmdb_any_variable_sync.rs | 142 +-
storage/fuzz/fuzz_targets/qmdb_immutable.rs | 357 ++-
storage/fuzz/fuzz_targets/qmdb_keyless.rs | 162 +-
storage/fuzz/fuzz_targets/qmdb_ordered_batching.rs | 306 +-
.../fuzz/fuzz_targets/qmdb_ordered_operations.rs | 395 +--
.../fuzz/fuzz_targets/qmdb_unordered_batch_root.rs | 192 ++
.../fuzz/fuzz_targets/qmdb_unordered_operations.rs | 340 +-
storage/fuzz/fuzz_targets/range_proof.rs | 8 +-
storage/fuzz/fuzz_targets/store_operations.rs | 49 +-
storage/fuzz/fuzz_targets/translator_operations.rs | 144 -
storage/fuzz/fuzz_targets/verify_proof.rs | 4 +-
storage/src/archive/benches/utils.rs | 7 +
storage/src/archive/immutable/storage.rs | 13 +-
storage/src/archive/mod.rs | 13 +-
storage/src/archive/prunable/mod.rs | 9 +-
storage/src/archive/prunable/storage.rs | 4 +
storage/src/bitmap/authenticated.rs | 278 +-
storage/src/cache/storage.rs | 18 +-
storage/src/freezer/mod.rs | 10 +-
storage/src/freezer/storage.rs | 49 +-
storage/src/index/benches/bench.rs | 40 +
storage/src/index/benches/insert.rs | 30 +-
storage/src/index/benches/lookup.rs | 71 +
storage/src/index/benches/lookup_miss.rs | 98 +
storage/src/index/mod.rs | 9 +
storage/src/index/ordered.rs | 6 +
storage/src/index/partitioned/ordered.rs | 8 +
storage/src/index/partitioned/unordered.rs | 8 +
storage/src/index/unordered.rs | 6 +
storage/src/journal/authenticated.rs | 3326 ++++++++++++--------
storage/src/journal/contiguous/fixed.rs | 147 +-
storage/src/journal/contiguous/mod.rs | 64 +
storage/src/journal/contiguous/tests.rs | 110 +-
storage/src/journal/contiguous/variable.rs | 152 +-
storage/src/journal/mod.rs | 6 +-
storage/src/journal/segmented/fixed.rs | 35 +
storage/src/journal/segmented/variable.rs | 99 +-
storage/src/kv/batch.rs | 172 -
storage/src/kv/mod.rs | 124 -
storage/src/lib.rs | 18 +-
storage/src/merkle/batch.rs | 1246 ++++++++
storage/src/{mmr => merkle}/benches/append.rs | 31 +-
storage/src/merkle/benches/append_additional.rs | 76 +
storage/src/{mmr => merkle}/benches/bench.rs | 0
.../{mmr => merkle}/benches/prove_many_elements.rs | 47 +-
.../benches/prove_single_element.rs | 54 +-
storage/src/{mmr => merkle}/benches/update.rs | 57 +-
storage/src/merkle/conformance.rs | 81 +
storage/src/{mmr => merkle}/hasher.rs | 180 +-
storage/src/merkle/journaled.rs | 3133 ++++++++++++++++++
storage/src/merkle/location.rs | 356 +++
storage/src/merkle/mem.rs | 1357 ++++++++
storage/src/merkle/mmb/batch.rs | 13 +
storage/src/merkle/mmb/iterator.rs | 436 +++
storage/src/merkle/mmb/journaled.rs | 22 +
storage/src/merkle/mmb/mem.rs | 242 ++
storage/src/merkle/mmb/mod.rs | 582 ++++
storage/src/merkle/mmb/proof.rs | 79 +
storage/src/merkle/mmr/batch.rs | 13 +
storage/src/{ => merkle}/mmr/iterator.rs | 168 +-
storage/src/merkle/mmr/journaled.rs | 346 ++
storage/src/merkle/mmr/mem.rs | 294 ++
storage/src/merkle/mmr/mod.rs | 804 +++++
storage/src/merkle/mmr/proof.rs | 404 +++
storage/src/merkle/mmr/verification.rs | 57 +
storage/src/merkle/mod.rs | 264 ++
storage/src/merkle/path.rs | 89 +
storage/src/{mmr => merkle}/position.rs | 361 ++-
storage/src/merkle/proof.rs | 1922 +++++++++++
storage/src/merkle/read.rs | 92 +
storage/src/merkle/storage.rs | 36 +
storage/src/merkle/verification.rs | 443 +++
storage/src/metadata/storage.rs | 9 +-
storage/src/mmr/batch.rs | 1288 --------
storage/src/mmr/benches/append_additional.rs | 68 -
storage/src/mmr/conformance.rs | 47 -
storage/src/mmr/journaled.rs | 2850 -----------------
storage/src/mmr/location.rs | 607 ----
storage/src/mmr/mem.rs | 1443 ---------
storage/src/mmr/mod.rs | 160 -
storage/src/mmr/proof.rs | 1723 ----------
storage/src/mmr/read.rs | 74 -
storage/src/mmr/storage.rs | 29 -
storage/src/mmr/verification.rs | 239 --
storage/src/ordinal/storage.rs | 46 +-
storage/src/qmdb/any/batch.rs | 2304 +++++++++-----
storage/src/qmdb/any/db.rs | 456 ++-
storage/src/qmdb/any/mod.rs | 1546 ++++++---
storage/src/qmdb/any/operation/fixed.rs | 140 +-
storage/src/qmdb/any/operation/mod.rs | 141 +-
storage/src/qmdb/any/operation/update/mod.rs | 16 +-
storage/src/qmdb/any/operation/update/ordered.rs | 25 +-
storage/src/qmdb/any/operation/update/unordered.rs | 28 +-
storage/src/qmdb/any/operation/variable.rs | 97 +-
storage/src/qmdb/any/ordered/fixed.rs | 986 +++---
storage/src/qmdb/any/ordered/mod.rs | 431 +--
storage/src/qmdb/any/ordered/variable.rs | 413 ++-
storage/src/qmdb/any/sync/mod.rs | 295 +-
storage/src/qmdb/any/sync/tests.rs | 772 +++--
storage/src/qmdb/any/traits.rs | 213 +-
storage/src/qmdb/any/unordered/fixed.rs | 803 ++---
storage/src/qmdb/any/unordered/mod.rs | 125 +-
storage/src/qmdb/any/unordered/variable.rs | 1106 +++++--
storage/src/qmdb/any/value.rs | 2 +-
storage/src/qmdb/benches/bench.rs | 9 +
storage/src/qmdb/benches/bench_merkleize.rs | 13 +
storage/src/qmdb/benches/common.rs | 550 ++++
storage/src/qmdb/benches/fixed/generate.rs | 131 -
storage/src/qmdb/benches/fixed/init.rs | 220 --
storage/src/qmdb/benches/fixed/mod.rs | 285 --
storage/src/qmdb/benches/generate.rs | 161 +
storage/src/qmdb/benches/generate_bench.rs | 17 -
storage/src/qmdb/benches/init.rs | 147 +
storage/src/qmdb/benches/init_bench.rs | 15 -
storage/src/qmdb/benches/keyless/generate.rs | 111 -
storage/src/qmdb/benches/keyless/mod.rs | 3 -
storage/src/qmdb/benches/merkleize.rs | 630 ++++
storage/src/qmdb/benches/variable/generate.rs | 107 -
storage/src/qmdb/benches/variable/init.rs | 158 -
storage/src/qmdb/benches/variable/mod.rs | 193 --
storage/src/qmdb/current/batch.rs | 1762 +++++------
storage/src/qmdb/current/db.rs | 885 +++---
storage/src/qmdb/current/grafting.rs | 877 ++++--
storage/src/qmdb/current/mod.rs | 2292 +++++++++++---
storage/src/qmdb/current/ordered/db.rs | 80 +-
storage/src/qmdb/current/ordered/fixed.rs | 699 +---
storage/src/qmdb/current/ordered/mod.rs | 794 ++++-
.../src/qmdb/current/ordered/test_trait_impls.rs | 97 +-
storage/src/qmdb/current/ordered/variable.rs | 691 +---
storage/src/qmdb/current/proof.rs | 963 +++++-
storage/src/qmdb/current/sync/mod.rs | 498 ++-
storage/src/qmdb/current/sync/tests.rs | 191 +-
storage/src/qmdb/current/unordered/db.rs | 66 +-
storage/src/qmdb/current/unordered/fixed.rs | 434 +--
storage/src/qmdb/current/unordered/mod.rs | 501 ++-
.../src/qmdb/current/unordered/test_trait_impls.rs | 96 +-
storage/src/qmdb/current/unordered/variable.rs | 451 +--
storage/src/qmdb/immutable/batch.rs | 356 ++-
storage/src/qmdb/immutable/fixed.rs | 674 ++++
storage/src/qmdb/immutable/mod.rs | 2967 +++++++++--------
storage/src/qmdb/immutable/operation.rs | 305 --
storage/src/qmdb/immutable/operation/fixed.rs | 172 +
storage/src/qmdb/immutable/operation/mod.rs | 176 ++
storage/src/qmdb/immutable/operation/variable.rs | 185 ++
storage/src/qmdb/immutable/sync.rs | 334 +-
storage/src/qmdb/immutable/variable.rs | 698 ++++
storage/src/qmdb/keyless/batch.rs | 312 +-
storage/src/qmdb/keyless/fixed.rs | 575 ++++
storage/src/qmdb/keyless/mod.rs | 3043 +++++++++---------
storage/src/qmdb/keyless/operation.rs | 158 -
storage/src/qmdb/keyless/operation/fixed.rs | 155 +
storage/src/qmdb/keyless/operation/mod.rs | 143 +
storage/src/qmdb/keyless/operation/variable.rs | 118 +
storage/src/qmdb/keyless/variable.rs | 608 ++++
storage/src/qmdb/mod.rs | 151 +-
storage/src/qmdb/operation.rs | 11 +-
storage/src/qmdb/store/db.rs | 657 ++--
storage/src/qmdb/store/mod.rs | 122 +-
storage/src/qmdb/sync/database.rs | 39 +-
storage/src/qmdb/sync/engine.rs | 602 +++-
storage/src/qmdb/sync/error.rs | 7 +-
storage/src/qmdb/sync/gaps.rs | 14 +-
storage/src/qmdb/sync/journal.rs | 9 +-
storage/src/qmdb/sync/requests.rs | 100 +-
storage/src/qmdb/sync/resolver.rs | 249 +-
storage/src/qmdb/sync/target.rs | 127 +-
storage/src/qmdb/verify.rs | 1112 ++++---
storage/src/queue/shared.rs | 17 +-
storage/src/queue/storage.rs | 16 +-
storage/src/rmap/mod.rs | 93 +
storage/src/translator.rs | 71 +-
stream/src/encrypted.rs | 664 +++-
stream/src/utils/codec.rs | 95 +-
utils/conformance.toml | 8 +
utils/src/bitmap/mod.rs | 307 ++
utils/src/bitmap/prunable.rs | 282 +-
utils/src/lib.rs | 7 +
utils/src/ordered.rs | 8 +
utils/src/range.rs | 207 ++
utils/src/rng.rs | 33 +-
utils/src/sync/mod.rs | 2 +-
zepter.yaml | 2 +-
431 files changed, 76814 insertions(+), 37693 deletions(-)New Contributors
- @voith made their first contribution in #3414
- @guruvamsi-policharla made their first contribution in #3462
Full Changelog: v2026.3.0...v2026.4.0