Skip to content

Releases: cberner/redb

1.0.0

16 Jun 17:54
Compare
Choose a tag to compare

Announcement

redb has reached its first stable release! The file format is now gauranteed to be backward compatible,
and the API is stable. I've run pretty extensive fuzz testing, but please report any bugs you encounter.

The following features are complete:

  • MVCC with a single WriteTransaction and multiple ReadTransactions
  • Zero-copy reads
  • ACID semantics, including non-durable transactions which only sacrifice Durability
  • Savepoints which allow the state of the database to be captured and restored later

Changes from 0.22.0:

  • Stabilize file format
  • Improve performance of restore_savepoint()

0.22.0

12 Jun 21:30
Compare
Choose a tag to compare
  • Fix panic while repairing a database file after crash
  • Fix rare panic in restore_savepoint()

0.21.0

09 Jun 18:16
Compare
Choose a tag to compare
  • Improve cache heuristic. This asymptotically improves performance on large databases. Benchmarks show 30% to 5x+
  • Fix rare crash that could occur under certain conditions when inserting values > 2GiB
  • Fix crash when growing database beyond 4TiB
  • Fix panic when repairing a database containing a multimap table with fixed width values
  • Performance optimizations
  • File format simplifications

0.20.0

30 May 21:33
Compare
Choose a tag to compare
  • Export TransactionError and CommitError. These were unintentionally private
  • Implement std::error::Error for all error enums

0.19.0

30 May 03:33
Compare
Choose a tag to compare
  • Remove Clone bound from range argument type on drain() and drain_filter()
  • File format changes to improve future extensibility

0.18.0

28 May 16:44
Compare
Choose a tag to compare
  • Improve errors to be more granular. Error has been split into multiple different enums, which
    can all be implicitly converted back to Error for convenience
  • Rename savepoint() to ephemeral_savepoint()
  • Add support for persistent savepoints. These persist across database restarts and must be explicitly
    released
  • Optimize restore_savepoint() to be ~30x faster
  • Add experimental support for WASI. This requires nightly
  • Implement RedbKey for ()
  • Fix some rare crash and data corruption bugs

0.17.0

09 May 16:04
Compare
Choose a tag to compare
  • Enforce a limit of 3GiB on keys & values
  • Fix database corruption bug that could occur if a Durability::None commit was made,
    followed by a durable commit and the durable commit crashed or encountered an I/O error during commit()
  • Fix panic when re-openning a database file, when the process that last had it open had crashed
  • Fix several bugs where an I/O error during commit() could cause a panic instead of returning an Err
  • Change length argument to insert_reserve() to u32
  • Change Table::len() to return u64
  • Change width of most fields in DatabaseStats to u64
  • Remove K type parameter from AccessGuardMut
  • Add Database::compact() which compacts the database file
  • Performance optimizations

0.16.0

29 Apr 03:23
Compare
Choose a tag to compare
  • Combine Builder::set_read_cache_size() and Builder::set_write_cache_size() into a single,
    Builder::set_cache_size() setting
  • Relax lifetime constraints on read methods on tables
  • Optimizations to Savepoint

0.15.0

28 Apr 16:37
Compare
Choose a tag to compare
  • Add Database::check_integrity() to explicitly run repair process (it is still always run if needed on db open)
  • Change list_tables() to return a TableHandle
  • Change delete_table() to take a TableHandle
  • Make insert_reserve() API signature type safe
  • Change all iterators to return Result and propagate I/O errors
  • Replace WriteStrategy with Durability::Paranoid
  • Remove Builder::set_initial_size()
  • Enable db file shrinking on Windows
  • Performance optimizations

0.14.0

26 Mar 19:30
Compare
Choose a tag to compare
  • Remove Builder::create_mmapped() and Builder::open_mmapped(). The mmap backend has been removed
    because it was infeasible to prove that it was sound. This makes the redb API entirely safe,
    and the remaining File based backed is within a factor of ~2x on all workloads that I've benchmarked
  • Make Table implement Send. It is now possible to insert into multiple Tables concurrently
  • Expose AccessGuardMut, Drain and DrainFilter in the public API
  • Rename RangeIter to Range
  • RenameMultimapRangeIter to MultimapRange
  • Rename MultimapValueIter to MultimapValue
  • Performance optimizations