Skip to content

Releases: cberner/redb

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

0.11.0

14 Jan 22:20
Compare
Choose a tag to compare
  • Remove [u8] and str type support. Use &[u8] and &str instead.
  • Change get(), range() and several other methods to return AccessGuard.
  • Rename AccessGuard::to_value() to value()
  • Add a non-mmap based backend which is now the default. This makes Database::create() and
    Database::open() safe, but has worse performance in some cases. The mmap backend is available
    via create_mmapped()/open_mmapped(). There is no difference in the file format, so applications
    can switch from one backend to the other.
  • Better handling of fsync failures

0.10.0

24 Nov 05:38
Compare
Choose a tag to compare
  • Remove maximum database size argument from create(). Databases are now unbounded in size
  • Reduce address space usage on Windows
  • Remove set_dynamic_growth()
  • Add set_initial_size() to Builder
  • Optimize cleanup of deleted pages. This resolves a performance issue where openning a Database
    or performing a small transaction, could be slow if the last committed transaction deleted a large
    number of pages
  • Remove set_page_size(). 4kB pages are always used now
  • Add iter() method to Table and MultimapTable
  • Fix various lifetime issues with type that had a lifetime, such as &str and (&[u8], u64)

0.9.0

05 Nov 16:40
Compare
Choose a tag to compare
  • Add support for dynamic file growth on Windows
  • Add support for tuple types as keys and values
  • Remove Builder::set_region_size
  • Save lifetime from Savepoint
  • Fix crash when using create() to open an existing database created with WriteStrategy::TwoPhase
  • Fix rare crash when writing a mix of small and very large values into the same table
  • Performance optimizations

0.8.0

19 Oct 04:27
Compare
Choose a tag to compare
  • Performance improvements for database files that are too large to fit in RAM
  • Fix deadlock in concurrent calls to savepoint() and restore_savepoint()
  • Fix crash if restore_savepoint() failed
  • Move savepoint() and restore_savepoint() methods to WriteTransaction
  • Implement Iterator for the types returned from range() and remove_all()

0.7.0

26 Sep 00:32
Compare
Choose a tag to compare
  • Add support for Windows
  • Add Database::set_write_strategy which allows the WriteStrategy of the database to be changed after creation
  • Make Database::begin_write block, instead of panic'ing, if there is another write already in progress
  • Add Database::savepoint and Database::restore_savepoint which can be used to snapshot and rollback the database
  • Rename DatabaseBuilder to Builder
  • Performance optimizations for large databases

0.6.1

11 Sep 23:27
Compare
Choose a tag to compare
  • Fix crash when Database::open() was called on a database that had been created with WriteStrategy::TwoPhase
  • Change default region size on 32bit platforms to 4GiB