# Changelog

## 0.55.0
* Breaking change: Migrate MSRV 1.60
* Breaking change: Upgrade `windows-sys` to version 0.59

## 0.54.0
* Breaking change: Migrate to the 2021 edition of Rust (MSRV 1.56)
* Breaking change: Upgrade `windows-sys` to version 0.52

## 0.15.0, 0.53.0
* Don't stop deserialization of `Any` due to `REG_NONE` (pullrequest [#67](https://github.com/gentoo90/winreg-rs/pull/67), fixes [#66](https://github.com/gentoo90/winreg-rs/issues/66))
* Implement (de)serialization of `Option` ([#56](https://github.com/gentoo90/winreg-rs/issues/56))
* Add `RegKey` methods for creating/opening subkeys with custom options ([#65](https://github.com/gentoo90/winreg-rs/pull/65))

## 0.52.0
* Breaking change: `.commit()` and `.rollback()` now consume the transaction ([#62](https://github.com/gentoo90/winreg-rs/issues/62))
* Add `RegKey::rename_subkey()` method ([#58](https://github.com/gentoo90/winreg-rs/issues/58))
* Make serialization modules public ([#59](https://github.com/gentoo90/winreg-rs/issues/59))
* Fix UB in `FromRegValue` for `u32` and `u64` ([#61](https://github.com/gentoo90/winreg-rs/issues/61))

## 0.14.0
* Breaking change: increase MSRV to 1.34
* Fix UB in `FromRegValue` for `u32` and `u64` ([#61](https://github.com/gentoo90/winreg-rs/issues/61))

## 0.13.0

* Breaking change: `.commit()` and `.rollback()` now consume the transaction ([#62](https://github.com/gentoo90/winreg-rs/issues/62))
* Add `RegKey::rename_subkey()` method ([#58](https://github.com/gentoo90/winreg-rs/issues/58))
* Make serialization modules public ([#59](https://github.com/gentoo90/winreg-rs/issues/59))

## 0.12.0, 0.51.0

* Breaking change: fix `std::fmt::Display` implementation for `RegValue` ([#52](https://github.com/gentoo90/winreg-rs/issues/52))
* Add `RegKey::encode_transacted()` method (pullrequest [#55](https://github.com/gentoo90/winreg-rs/pull/55), fixes [#54](https://github.com/gentoo90/winreg-rs/issues/54))

## 0.50.0

* Breaking change: [`winapi-rs`](https://crates.io/crates/winapi) is not maintained any more, so migrate to Microsofts [`windows-sys`](https://crates.io/crates/windows-sys) as a backend ([#48](https://github.com/gentoo90/winreg-rs/pull/48), [#51](https://github.com/gentoo90/winreg-rs/pull/51))
* Breaking change: Increase minimum supported Rust version to `1.46` since `windows-sys` doesn't compile with older versions
* Replace deprecated methods from `chrono` ([#48](https://github.com/gentoo90/winreg-rs/pull/48))

## 0.11.0

* Migrate to the 2018 edition of Rust
* Move the code from `lib.rs` to separate files
* Use [`cfg-if`](https://crates.io/crates/cfg-if) instead of `build.rs` to fail build on non-windows systems
* Reimplement deserialization logic, implement [de]serialization for byte arrays ([#49](https://github.com/gentoo90/winreg-rs/issues/49))
* Fix some typos and `clippy` warnings

## 0.10.1

* Bump the minimal required version of `winapi` to `0.3.9` (required for `load_app_key`)
* Reexport `REG_PROCESS_APPKEY` and use it in the `load_app_key` example

## 0.10.0

* Add `RegKey::load_app_key()` and `RegKey::load_app_key_with_flags()` ([#30](https://github.com/gentoo90/winreg-rs/issues/30))
* Update dev dependency `rand` to `0.8`
* Add Github actions
* Fix some clippy warnings

## 0.9.0

* Breaking change: `OsStr` and `OsString` registry values are not `NULL`-terminated any more ([#34](https://github.com/gentoo90/winreg-rs/issues/34), [#42](https://github.com/gentoo90/winreg-rs/issues/42))
* Refactoring: use macros for `ToRegValue` impls and tests for string values
* Fix `bare_trait_objects` warning in the doctests
* Add `impl ToRegValue for OsString`
* Add conversion between `REG_MULTI_SZ` and vectors of strings ([#16](https://github.com/gentoo90/winreg-rs/issues/16))
* Fix: set minimal `winapi` version to 0.3.7 (earlier versions don't have `impl-default` and `impl-debug` features which we use)
* Appveyor now checks the crate against `rust-1.31.1` too

## 0.8.0

* Implement serialization of `char` and maps
* Implement `std::fmt::Display` for `RegValue`
* Make `RegKey::{predef,raw_handle,enum_keys,enum_values}` functions `const`
* Give a better error message when compiling on platforms other than Windows ([#38](https://github.com/gentoo90/winreg-rs/pull/38))
* Tests are moved from `src/lib.rs` to `tests/reg_key.rs`

## 0.7.0

* Breaking change: remove deprecated `Error::description` ([#28](https://github.com/gentoo90/winreg-rs/pull/28))
* Optimize `Iterator::nth()` for the `Enum*` iterators ([#29](https://github.com/gentoo90/winreg-rs/pull/29))

## 0.6.2

* Add `RegKey::delete_subkey_with_flags()` ([#27](https://github.com/gentoo90/winreg-rs/pull/27))

## 0.6.1

* Add `last_write_time` field to `RegKeyMetadata` (returned by `RegKey::query_info()`) ([#25](https://github.com/gentoo90/winreg-rs/pull/25)).
* Add `get_last_write_time_system()` and `get_last_write_time_chrono()` (under `chrono` feature) methods to `RegKeyMetadata`.

## 0.6.0

* Breaking change: `create_subkey`, `create_subkey_with_flags`, `create_subkey_transacted` and
`create_subkey_transacted_with_flags` now return a tuple which contains the subkey and its disposition
which can be `REG_CREATED_NEW_KEY` or `REG_OPENED_EXISTING_KEY` ([#21](https://github.com/gentoo90/winreg-rs/issues/21)).
* Examples fixed to not use `unwrap` according to [Rust API guidelines](https://rust-lang-nursery.github.io/api-guidelines/documentation.html#examples-use--not-try-not-unwrap-c-question-mark).

## 0.5.1

* Reexport `HKEY` ([#15](https://github.com/gentoo90/winreg-rs/issues/15)).
* Add `raw_handle` method ([#18](https://github.com/gentoo90/winreg-rs/pull/18)).

## 0.5.0

* Breaking change: `open_subkey` now opens a key with readonly permissions.
Use `create_subkey` or `open_subkey_with_flags` to open with read-write permissions.
* Breaking change: features `transactions` and `serialization-serde` are now disabled by default.
* Breaking change: serialization now uses `serde` instead of `rustc-serialize`.
* `winapi` updated to `0.3`.
* Documentation fixes ([#14](https://github.com/gentoo90/winreg-rs/pull/14))

## 0.4.0

* Make transactions and serialization otional features
* Update dependencies + minor fixes ([#12](https://github.com/gentoo90/winreg-rs/pull/12))

## 0.3.5

* Implement `FromRegValue` for `OsString` and `ToRegValue` for `OsStr` ([#8](https://github.com/gentoo90/winreg-rs/issues/8))
* Minor fixes

## 0.3.4

* Add `copy_tree` method to `RegKey`
* Now checked with [rust-clippy](https://github.com/Manishearth/rust-clippy)
    * no more `unwrap`s
    * replaced `to_string` with `to_owned`
* Fix: reading strings longer than 2048 characters ([#6](https://github.com/gentoo90/winreg-rs/pull/6))

## 0.3.3

* Fix: now able to read values longer than 2048 bytes ([#3](https://github.com/gentoo90/winreg-rs/pull/3))

## 0.3.2

* Fix: `FromRegValue` trait now requires `Sized` (fixes build with rust 1.4)

## 0.3.1

* Fix: bump `winapi` version to fix build

## 0.3.0

* Add transactions support and make serialization transacted
* Breaking change: use `std::io::{Error,Result}` instead of own `RegError` and `RegResult`
