Skip to content

build(deps): bump redb from 2.6.3 to 4.2.0 - #32

Open
dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/cargo/redb-4.1.0
Open

dependabot[bot] wants to merge 1 commit into
mainfrom
dependabot/cargo/redb-4.1.0

Conversation

@dependabot

@dependabot dependabot Bot commented on behalf of github Aug 3, 2026

Copy link
Copy Markdown

Bumps redb from 2.6.3 to 4.2.0.

Release notes

Sourced from redb's releases.

4.2.0

New features

  • Add an experimental cursor API, behind the experimental_cursor feature flag: Table::lower_bound_mut() and Table::upper_bound_mut() return a CursorMut pointing at a gap between entries, modeled on the standard library's BTreeMap cursors. Inserting sorted data through its insert_before() method can be around 3x faster than calling insert() with the same data; insert_after() inserts through the gap in descending order at the same speed. ReadableTable::lower_bound() and ReadableTable::upper_bound() return a read-only Cursor. The feature is unstable and may change incompatibly, or be removed, in any release.
  • Add ReadOnlyTable::get_owned(), ReadOnlyTable::range_owned(), ReadOnlyMultimapTable::get_owned(), and ReadOnlyMultimapTable::range_owned(), which return the new OwnedAccessGuard, OwnedRange, OwnedMultimapValue, and OwnedMultimapRange types. These keep the read transaction alive until they are dropped, including the guards yielded by the iterators, which may outlive the iterator that produced them.
  • Add Table::entry() and the associated Entry, OccupiedEntry, and VacantEntry types, mirroring std::collections::BTreeMap::entry. Supports or_insert, or_insert_with, or_insert_with_key, and_modify, and the usual OccupiedEntry / VacantEntry accessors.
  • Add ExtractIf::close() to explicitly finalize an extract iterator without removing unread entries.

Optimizations

  • Improve write performance: Durability::None commits are about 2x faster, and writes that do not split a page are about 15% faster for single-key Durability::None commits and about 6% faster for batched writes.
  • Improve write performance when tables of a single WriteTransaction are modified concurrently from multiple threads. Writes to separate tables previously serialized on internal locks and could be slower than writing from a single thread; they now scale with the number of threads. Up to about 4x faster.
  • Optimize Table::pop_first() and Table::pop_last() to be about 2x faster.
  • Optimize inserting in ascending key order. A table loaded in key order occupies about half as much space, and loads faster.
  • Optimize Table::retain(), Table::retain_in(), Table::extract_if(), and Table::extract_from_if(). Benchmarks on large tables show a 30-100x speedup for retaining and an 18-65x speedup for extracting, depending on the fraction of entries affected. Iterating an extract iterator from both ends no longer degrades removal batching.
  • Avoid unnecessary write amplification when removing a value that is not present from a multimap table. Such a removal is now a no-op.

Minor improvements

  • Table::retain(), Table::retain_in(), Table::extract_if(), and Table::extract_from_if() now poison the write transaction if their predicate panics or an internal error prevents removals from being applied, causing WriteTransaction::commit() to return CommitError::TransactionPoisoned. After an extract iterator returns an error, later calls keep returning an error instead of continuing.
  • Enable file space reclamation during non-durable transactions performed while a savepoint exists.
  • Reuse pages freed by a durable write transaction in the next write transaction when no live read transaction or savepoint still needs them. Previously, pages were not reused for one additional transaction.

... (truncated)

Changelog

Sourced from redb's changelog.

4.2.0 - 2026-08-17

New features

  • Add an experimental cursor API, behind the experimental_cursor feature flag: Table::lower_bound_mut() and Table::upper_bound_mut() return a CursorMut pointing at a gap between entries, modeled on the standard library's BTreeMap cursors. Inserting sorted data through its insert_before() method can be around 3x faster than calling insert() with the same data; insert_after() inserts through the gap in descending order at the same speed. ReadableTable::lower_bound() and ReadableTable::upper_bound() return a read-only Cursor. The feature is unstable and may change incompatibly, or be removed, in any release.
  • Add ReadOnlyTable::get_owned(), ReadOnlyTable::range_owned(), ReadOnlyMultimapTable::get_owned(), and ReadOnlyMultimapTable::range_owned(), which return the new OwnedAccessGuard, OwnedRange, OwnedMultimapValue, and OwnedMultimapRange types. These keep the read transaction alive until they are dropped, including the guards yielded by the iterators, which may outlive the iterator that produced them.
  • Add Table::entry() and the associated Entry, OccupiedEntry, and VacantEntry types, mirroring std::collections::BTreeMap::entry. Supports or_insert, or_insert_with, or_insert_with_key, and_modify, and the usual OccupiedEntry / VacantEntry accessors.
  • Add ExtractIf::close() to explicitly finalize an extract iterator without removing unread entries.

Optimizations

  • Improve write performance: Durability::None commits are about 2x faster, and writes that do not split a page are about 15% faster for single-key Durability::None commits and about 6% faster for batched writes.
  • Improve write performance when tables of a single WriteTransaction are modified concurrently from multiple threads. Writes to separate tables previously serialized on internal locks and could be slower than writing from a single thread; they now scale with the number of threads. Up to about 4x faster.
  • Optimize Table::pop_first() and Table::pop_last() to be about 2x faster.
  • Optimize inserting in ascending key order. A table loaded in key order occupies about half as much space, and loads faster.
  • Optimize Table::retain(), Table::retain_in(), Table::extract_if(), and Table::extract_from_if(). Benchmarks on large tables show a 30-100x speedup for retaining and an 18-65x speedup for extracting, depending on the fraction of entries affected. Iterating an extract iterator from both ends no longer degrades removal batching.
  • Avoid unnecessary write amplification when removing a value that is not present from a multimap table. Such a removal is now a no-op.

Minor improvements

  • Table::retain(), Table::retain_in(), Table::extract_if(), and Table::extract_from_if() now poison the write transaction if their predicate panics or an internal error prevents removals from being applied, causing WriteTransaction::commit() to return CommitError::TransactionPoisoned. After an extract iterator returns an error, later calls keep returning an error instead of continuing.
  • Enable file space reclamation during non-durable transactions performed while a savepoint exists.
  • Reuse pages freed by a durable write transaction in the next write transaction when no live read transaction or savepoint still needs them. Previously, pages were not reused for one additional

... (truncated)

Commits
  • 23b6ba0 Bump version to 4.2.0
  • a382aa4 Update changelog
  • e433e52 Update the post-commit epilogue's pages in place
  • cff6e50 Report the repeated benchmark read phases as a single row
  • e01dfab Report benchmark results as rates rather than durations
  • 553cacd Build without std
  • 55735f8 Call StorageBackend::close() when opening a database fails
  • 927c2e4 Report backend failures through crate::io::Error
  • 2471234 Report malformed freed-page records instead of panicking
  • d0d9ed8 Generate a lockfile in test_wasi when one is missing
  • Additional commits viewable in compare view

@dependabot @github

dependabot Bot commented on behalf of github Aug 3, 2026

Copy link
Copy Markdown
Author

Labels

The following labels could not be found: dependencies. Please create it before Dependabot can add it to a pull request.

Please fix the above issues or remove invalid values from dependabot.yml.

Bumps [redb](https://github.com/cberner/redb) from 2.6.3 to 4.2.0.
- [Release notes](https://github.com/cberner/redb/releases)
- [Changelog](https://github.com/cberner/redb/blob/master/CHANGELOG.md)
- [Commits](cberner/redb@v2.6.3...v4.2.0)

---
updated-dependencies:
- dependency-name: redb
  dependency-version: 4.1.0
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
@dependabot dependabot Bot changed the title build(deps): bump redb from 2.6.3 to 4.1.0 build(deps): bump redb from 2.6.3 to 4.2.0 Aug 24, 2026
@dependabot
dependabot Bot force-pushed the dependabot/cargo/redb-4.1.0 branch from 36fab34 to 40cb1fd Compare August 24, 2026 22:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants