Releases: cberner/redb
Releases Β· cberner/redb
1.0.0
Announcement
redb has reached its first stable release! The file format is now gauranteed to be backward compatible,
and the API is stable. I've run pretty extensive fuzz testing, but please report any bugs you encounter.
The following features are complete:
- MVCC with a single
WriteTransaction
and multipleReadTransaction
s - Zero-copy reads
- ACID semantics, including non-durable transactions which only sacrifice Durability
- Savepoints which allow the state of the database to be captured and restored later
Changes from 0.22.0:
- Stabilize file format
- Improve performance of
restore_savepoint()
0.22.0
0.21.0
- Improve cache heuristic. This asymptotically improves performance on large databases. Benchmarks show 30% to 5x+
- Fix rare crash that could occur under certain conditions when inserting values > 2GiB
- Fix crash when growing database beyond 4TiB
- Fix panic when repairing a database containing a multimap table with fixed width values
- Performance optimizations
- File format simplifications
0.20.0
0.19.0
0.18.0
- Improve errors to be more granular.
Error
has been split into multiple differentenum
s, which
can all be implicitly converted back toError
for convenience - Rename
savepoint()
toephemeral_savepoint()
- Add support for persistent savepoints. These persist across database restarts and must be explicitly
released - Optimize
restore_savepoint()
to be ~30x faster - Add experimental support for WASI. This requires nightly
- Implement
RedbKey
for()
- Fix some rare crash and data corruption bugs
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