Releases: cberner/redb
Releases Β· cberner/redb
0.15.0
- Add
Database::check_integrity()to explicitly run repair process (it is still always run if needed on db open) - Change
list_tables()to return aTableHandle - Change
delete_table()to take aTableHandle - Make
insert_reserve()API signature type safe - Change all iterators to return
Resultand propagate I/O errors - Replace
WriteStrategywithDurability::Paranoid - Remove
Builder::set_initial_size() - Enable db file shrinking on Windows
- Performance optimizations
0.14.0
- Remove
Builder::create_mmapped()andBuilder::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 remainingFilebased backed is within a factor of ~2x on all workloads that I've benchmarked - Make
TableimplementSend. It is now possible to insert into multipleTables concurrently - Expose
AccessGuardMut,DrainandDrainFilterin the public API - Rename
RangeItertoRange - Rename
MultimapRangeItertoMultimapRange - Rename
MultimapValueItertoMultimapValue - Performance optimizations
0.13.0
- 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 inPageNumber::address_range
that was introduced by commitb2c44a824d1ba69f526a1a75c56ae8484bae7248 - Add
drain_filter()toTable - Make key and value type bounds more clear for tables
0.12.1
0.12.0
This version contains a known data corruption bug (fixed by #516) and SHOULD NOT be used
Changes:
- Add
pop_first()andpop_last()toTable - Add
drain()toTable - Add support for
Option<T>as a value type - Add support for user defined key and value types. Users must implement
RedbKeyand/orRedbValue - Change
get(),insert(),remove()...etc to take arguments of typeimpl Borrow<SelfType> - Return
Error::UpgradeRequiredwhen opening a file with an outdated file format - Improve support for 32bit platforms
- Performance optimizations
0.11.0
- Remove
[u8]andstrtype support. Use&[u8]and&strinstead. - Change
get(),range()and several other methods to returnAccessGuard. - Rename
AccessGuard::to_value()tovalue() - 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
viacreate_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
- 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()toBuilder - 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 toTableandMultimapTable - Fix various lifetime issues with type that had a lifetime, such as
&strand(&[u8], u64)
0.9.0
- 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 withWriteStrategy::TwoPhase - Fix rare crash when writing a mix of small and very large values into the same table
- Performance optimizations
0.8.0
- Performance improvements for database files that are too large to fit in RAM
- Fix deadlock in concurrent calls to
savepoint()andrestore_savepoint() - Fix crash if
restore_savepoint()failed - Move
savepoint()andrestore_savepoint()methods toWriteTransaction - Implement
Iteratorfor the types returned fromrange()andremove_all()
0.7.0
- Add support for Windows
- Add
Database::set_write_strategywhich allows theWriteStrategyof the database to be changed after creation - Make
Database::begin_writeblock, instead of panic'ing, if there is another write already in progress - Add
Database::savepointandDatabase::restore_savepointwhich can be used to snapshot and rollback the database - Rename
DatabaseBuildertoBuilder - Performance optimizations for large databases