Skip to content

Releases: cberner/redb

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

0.6.0

11 Sep 19:36
Compare
Choose a tag to compare
  • Return Err instead of panic'ing when opening a database file with an incompatible file format version
  • Many optimizations to the file format, and progress toward stabilizing it
  • Fix race between read & write transactions, which could cause reads to return corrupted data
  • Better document the different WriteStrategys
  • Fix panic when recovering a database that was uncleanly shutdown, which had been created with WriteStrategy::Checksum (which is the default)
  • Fix panic when using insert_reserve() in certain cases

0.5.0

07 Aug 03:34
Compare
Choose a tag to compare

Major features

Optimize MultimapTable storage format to use O(k * log(n_k) + v * log(n_v / n_k)) space instead of O(k * log(n_k + n_v) + v * log(n_k + n_v)) space, where k is the size of the stored keys, v is the size of the stored values, n_k is the number of stored keys, n_v is the number of stored values

Minor features

  • Add support for the unit type, (), as a value
  • Change MultimapTable::range to return an iterator of key-value-collection pairs, instead of key-value pairs
  • Automatically abort WriteTransaction on drop
  • Return an error when attempting to open the same database file for writing in multiple locations, concurrently

Fixes

  • Fix compilation errors for 32bit x86 targets
  • More robust handling of fsync failures