Releases: cberner/redb
Releases Β· cberner/redb
0.17.0
- 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 duringcommit()
- 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 anErr
- Change
length
argument toinsert_reserve()
tou32
- Change
Table::len()
to returnu64
- Change width of most fields in
DatabaseStats
tou64
- Remove
K
type parameter fromAccessGuardMut
- Add
Database::compact()
which compacts the database file - Performance optimizations
0.16.0
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
Result
and propagate I/O errors - Replace
WriteStrategy
withDurability::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 remainingFile
based backed is within a factor of ~2x on all workloads that I've benchmarked - Make
Table
implementSend
. It is now possible to insert into multipleTable
s concurrently - Expose
AccessGuardMut
,Drain
andDrainFilter
in the public API - Rename
RangeIter
toRange
- Rename
MultimapRangeIter
toMultimapRange
- Rename
MultimapValueIter
toMultimapValue
- 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
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