# Full changelog of `mmtkvdb`
* 2022-05-26: Version 0.3.0
* Storing owned types differently
* Removed implementation of `Storable` for certain smart pointers such
as `Vec<u8>` and `String`
* New traits `BorrowStorable` and `StorableRef` which handle storing
tuples in a more efficient way (without unnecessary cloning/copying)
* Improved documentation in module `storable`
* Minor style change: Renamed type arg from `X` to `T` for generic structs
in `owning_pointer`
* 2022-05-15: Version 0.2.0
* Trait `Env` was removed. Instead, `EnvRw` implements
`Deref<Target=EnvRo>`, which makes all methods of `EnvRo` available on
`EnvRw` as well. Converting an `EnvRw` into `EnvRo` is now simply done by
cloning.
* Methods `TxnRw::cursor_delete_current` and
`TxnRw::cursor_delete_current_key` did not properly defer closing the
affected databases. This might have caused database corruption when the
cursor and (all clones of) the database handle are dropped before the
transaction commits or aborts. This has been fixed.
* Added support for nested transactions.
* Suppress warnings regarding unused macro rules when using
`rustc 1.62.0-nightly (77652b9ef 2022-05-06)` (the unused macro rules are
kept for potential future use).
* Improved documentation:
* The doc comment for `TxnRw` contained a misleading (partial)
paragraph which was removed.
* Improved doc comments regarding duplicate keys on methods
`DbOptions::keys_unique`, `DbOptions::keys_duplicate`,
`DbOptions::has_duplicate_keys`, `TxnRw::put`,
`TxnRw::put_unless_key_exists`, `TxnRw::put_unless_pair_exists`.
* The private doc comment on `DbBackend` has been extended to explain
the mechanism of `TxnRw::used_dbs`, which defers closing of
databases.
* Internal changes:
* Method `TxnBackend::close_cursors` will finish closing the cursor
before releasing the lock on the `CursorBackend::closed` flag (this
should not affect runtime behavior).
* `EnvRo` is now used in some places where `EnvBackend` has been used
internally (this allows implementing `Deref<Target=EnvRo>` for
`EnvRw`).
* 2022-05-08: Version 0.1.0
* Removed `'static` bound from `Storable` trait
* Improved documentation regarding required `unsafe` use of this library
* 2022-05-05: Version 0.0.7
* Fixed method `cursor_set_key_search_value_get_value`, which was wrongly
defined and documented
* Added test function with various tests for cursors
* 2022-05-01: Version 0.0.6
* Fixed build error on nightly Rust by importing
`core::ffi::{c_size_t, c_int, c_uint}` for now instead of using
`std::ffi` (see
[commit `07ea143f96` in Rust](https://github.com/rust-lang/rust/commit/07ea143f96929ac7f0b7af0f025be48a472273e5)
for explanation)
* 2022-04-30: Version 0.0.5
* Method `EnvRo::txn` moved to `Env` trait and renamed to `Env::txn_ro`.
* Method `EnvRw::txn` renamed to `EnvRw::txn_rw`.
* Improved documentation of `EnvRo` and `EnvRw` (doc comment explains how
to create them now, i.e. how to start a transaction)
* 2022-04-22: Version 0.0.4
* No longer use `PhantomData` to store unit-like structs which indicate
constraints on key uniqueness in `DbOptions` and `Db` (`KeysUnique` and
`KeysDuplicate` are `Copy` now and contained directly)
* Minor fixes in documentation
* Changed argument name for passing `DbOptions` to `Env::open_dbs`
* Added link to `Sized` in doc comment on private trait `IsType`
* 2022-04-16: Version 0.0.3
* Avoid transmute on references: To avoid issues with (possible) future
changes in Rust, the `storable` module doesn't use `transmute` on
references anymore. Instead, `std::slice::from_raw_parts`,
`std::str::from_utf8_unchecked`, and `str::as_bytes()` are used.
* 2022-04-11: Version 0.0.2
* Moved `Storable`, `StorableConstBytesLen`, and `StorableWithOwned` traits
to new (public) `storable` module (but `Storable` gets re-exported by
crate-level module)
* Added method to clear stale readers
* Improved documentation on (un)safety
* Avoid unnecessary re-alignment in some cases of `u8` and `i8`
* Make type `bool` storable (i.e. implement `Storable` for `bool`)
* Added documentation comments for private items
* Code cleanup (moved private `IsType` trait to `helpers` module)
* 2022-04-10: Version 0.0.1
* First release