# Change Log
## [Unreleased]
## [0.8.10] - 2022-06-21
## Changed
* Upgraded `parking_lot`.
## [0.8.9] - 2020-06-30
## Changed
* Upgraded `parking_lot`.
## [0.8.7] - 2019-11-25
## Changed
* Upgraded `parking_lot`.
## [0.8.6] - 2019-10-19
## Added
* Added the ability to associate arbitrary data with pooled connections.
## [0.8.5] - 2019-06-06
## Changed
* Upgraded `parking_lot`.
## [0.8.4] - 2019-04-01
### Added
* Added a `HandleEvent` trait used to listen for various events from the pool for monitoring
purposes.
### Changed
* Switched from standard library synchronization primitives to `parking_lot`.
## [0.8.3] - 2018-11-03
### Fixed
* The set of idle connections is now treated as a stack rather than a queue. The old behavior
interacted poorly with configurations that allowed the pool size to shrink when mostly idle.
## [0.8.2] - 2017-12-24
### Changed
* Upgraded from log 0.3 to 0.4.
## [0.8.1] - 2017-10-28
### Fixed
* Fixed the example in the README.
## [0.8.0] - 2017-10-26
### Changed
* Pool configuration has changed. Rather than constructing a `Config` and passing it to the `Pool`
constructor, you now configure a `Builder` which then directly constructs the pool:
```rust
let config = Config::builder()
.min_idle(3)
.build();
let pool = Pool::new(config, manager)?;
let pool = Pool::builder()
.min_idle(3)
.build(manager)?;
```
* The `Pool::new` method can be used to construct a `Pool` with default settings:
```rust
let config = Config::default();
let pool = Pool::new(config, manager)?;
let pool = Pool::new(manager)?;
```
* The `initialization_fail_fast` configuration option has been replaced with separate
`Builder::build` and `Builder::build_unchecked` methods. The second returns a `Pool` directly
without wrapping it in a `Result`, and does not check that connections are being successfully
opened:
```rust
let config = Config::builder()
.initialization_fail_fast(false)
.build();
let pool = Pool::new(config, manager).unwrap();
let pool = Pool::builder().build_unchecked(manager);
```
* The `InitializationError` and `GetTimeout` error types have been merged into a unified `Error`
type.
* The `Pool::config` method has been replaced with accessor methods on `Pool` to directly access
configuration, such as `Pool::min_idle`.
* The `scheduled_thread_pool` crate has been upgraded from 0.1 to 0.2.
### Removed
* The deprecated `Builder::num_threads` method has been removed. Construct a `ScheduledThreadPool`
and set it via `Builder::thread_pool` instead.
## Older
Look at the [release tags] for information about older releases.
[Unreleased]: https://github.com/sfackler/r2d2/compare/v0.8.10...HEAD
[0.8.10]: https://github.com/sfackler/r2d2/compare/v0.8.9...v0.8.10
[0.8.9]: https://github.com/sfackler/r2d2/compare/v0.8.8...v0.8.9
[0.8.7]: https://github.com/sfackler/r2d2/compare/v0.8.6...v0.8.7
[0.8.6]: https://github.com/sfackler/r2d2/compare/v0.8.5...v0.8.6
[0.8.5]: https://github.com/sfackler/r2d2/compare/v0.8.4...v0.8.5
[0.8.4]: https://github.com/sfackler/r2d2/compare/v0.8.3...v0.8.4
[0.8.3]: https://github.com/sfackler/r2d2/compare/v0.8.2...v0.8.3
[0.8.2]: https://github.com/sfackler/r2d2/compare/v0.8.1...v0.8.2
[0.8.1]: https://github.com/sfackler/r2d2/compare/v0.8.0...v0.8.1
[0.8.0]: https://github.com/sfackler/r2d2/compare/v0.7.4...v0.8.0
[release tags]: https://github.com/sfackler/r2d2/releases