Skip to content

Releases: cberner/redb

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

0.13.0

05 Feb 18:03
Compare
Choose a tag to compare
  • Fix a major data corruption issue that was introduced in version 0.12.0. It caused databases
    greater than ~4GB to become irrecoverably corrupted due to an integer overflow in PageNumber::address_range
    that was introduced by commit b2c44a824d1ba69f526a1a75c56ae8484bae7248
  • Add drain_filter() to Table
  • Make key and value type bounds more clear for tables

0.12.1

22 Jan 19:37
Compare
Choose a tag to compare

This version contains a known data corruption bug (fixed by #516) and SHOULD NOT be used

Changes:

  • Fix open() on platforms with OS page size != 4KiB
  • Relax lifetime requirements on argument to range() and drain()

0.12.0

22 Jan 00:53
Compare
Choose a tag to compare

This version contains a known data corruption bug (fixed by #516) and SHOULD NOT be used

Changes:

  • Add pop_first() and pop_last() to Table
  • Add drain() to Table
  • Add support for Option<T> as a value type
  • Add support for user defined key and value types. Users must implement RedbKey and/or RedbValue
  • Change get(), insert(), remove()...etc to take arguments of type impl Borrow<SelfType>
  • Return Error::UpgradeRequired when opening a file with an outdated file format
  • Improve support for 32bit platforms
  • Performance optimizations