# 0.29
## New Features
* The `Config::open` method has been added to give
`Config` a similar feel to std's `fs::OpenOptions`.
The `Config::build` and `Db::start` methods are
now deprecated in favor of calling `Config::open`
directly
* A `checksum` method has been added to Tree and Db
for use in verifying backups and migrations.
* Transactions may now involve up to 69 different
tables. Nice.
* The `TransactionError::Abort` variant has had
a generic member added that can be returned
as a way to return information from a
manually-aborted transaction. An `abort` helper
function has been added to reduce the boiler-
plate required to return aborted results.
## Breaking Changes
* The `ConfigBuilder` structure has been removed
in favor of a simplified `Config` structure
with the same functionality.
* The way that sled versions are detected at
initialization time is now independent of serde.
* The `cas` method is deprecated in favor of the new
`compare_and_swap` method which now returns the
proposed value that failed to be applied.
* Tree nodes now have constant prefix encoding
lengths.
* The `io_buf_size` configurable renamed to
`segment_size`.
* The `io_buf_size` configurable method has been
removed from ConfigBuilder. This can be manually
set by setting the attribute directly on the
ConfigBuilder, but this is discouraged.
Additionally, this must now be a power of 2.
* The `page_consolidation_threshold` method has been
removed from ConfigBuilder, and this is now
a constant of 10.
# 0.28
## Breaking Changes
* `Iter` no longer has a lifetime parameter.
* `Db::open_tree` now returns a `Tree` instead of
an `Arc<Tree>`. `Tree` now has an inner type that
uses an `Arc`, so you don't need to think about it.
## Bug Fixes
* A bug with prefix encoding has been fixed that
led to nodes with keys longer than 256 bytes
being stored incorrectly, which led to them
being inaccessible and also leading to infinite
loops during iteration.
* Several cases of incorrect unsafe code were removed
from the sled crate. No bugs are known to have been
encountered, but they may have resulted in
incorrect optimizations in future refactors.
# 0.27
## Breaking Changes
* `Event::Set` has been renamed to `Event::Insert` and
`Event::Del` has been renamed to `Event::Remove`. These
names better align with the methods of BTreeMap from
the standard library.
## Bug Fixes
* A deadlock was possible in very high write volume
situations when the segment accountant lock was
taken by all IO threads while a task was blocked
trying to submit a file truncation request to the
threadpool while holding the segment accountant lock.
## New Features
* `flush_async` has been added to perform time-intensive
flushing in an asynchronous manner, returning a Future.
# 0.26.1
## Improvements
* std::thread is no longer used on platforms other than
linux, macos, and windows, which increases portability.
# 0.26
## New Features
* Transactions! You may now call `Tree::transaction` and
perform reads, writes, and deletes within a provided
closure with a `TransactionalTree` argument. This
closure may be called multiple times if the transaction
encounters a concurrent update in the process of its
execution. Transactions may also be used on tuples of
`Tree` objects, where the closure will then be
parameterized on `TransactionalTree` instances providing
access to each of the provided `Tree` instances. This
allows you to atomically read and modify multiple
`Tree` instances in a single atomic operation.
These transactions are serializable, fully ACID,
and optimistic.
* `Tree::apply_batch` allows you to apply a `Batch`
* `TransactionalTree::apply_batch` allow you to
apply a `Batch` from within a transaction.
## Breaking Changes
* `Tree::batch` has been removed. Now you can directly
create a `Batch` with `Batch::default()` and then apply
it to a `Tree` with `Tree::apply_batch` or during a
transaction using `TransactionalTree::apply_batch`.
This facilitates multi-`Tree` batches via transactions.
* `Event::Merge` has been removed, and `Tree::merge` will
now send a complete `Event::Set` item to be distributed
to all listening subscribers.