Releases: cberner/redb
Releases Β· cberner/redb
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
RedbKey
and/orRedbValue
- Change
get()
,insert()
,remove()
...etc to take arguments of typeimpl Borrow<SelfType>
- Return
Error::UpgradeRequired
when opening a file with an outdated file format - Improve support for 32bit platforms
- Performance optimizations
0.11.0
- Remove
[u8]
andstr
type support. Use&[u8]
and&str
instead. - 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 toTable
andMultimapTable
- Fix various lifetime issues with type that had a lifetime, such as
&str
and(&[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
Iterator
for the types returned fromrange()
andremove_all()
0.7.0
- Add support for Windows
- Add
Database::set_write_strategy
which allows theWriteStrategy
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
andDatabase::restore_savepoint
which can be used to snapshot and rollback the database - Rename
DatabaseBuilder
toBuilder
- Performance optimizations for large databases
0.6.1
0.6.0
- 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
WriteStrategy
s - 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