## 1.5.1-dev

## 1.5.0

* Stable release for null safety.

## 1.5.0-nullsafety.3

* Update SDK constraints to `>=2.12.0-0 <3.0.0` based on beta release
  guidelines.

## 1.5.0-nullsafety.2

* Allow prerelease versions of the 2.12 sdk.

## 1.5.0-nullsafety.1

* Allow 2.10 stable and 2.11.0 dev SDK versions.

## 1.5.0-nullsafety

* Migrate to null safety.
* `forEach`: Avoid `await null` if the `Stream` is not paused.
  Improves trivial benchmark by 40%.

## 1.4.0

* Add `forEach` to `Pool` to support efficient async processing of an
  `Iterable`.

* Throw ArgumentError if poolSize <= 0

## 1.3.6

* Set max SDK version to `<3.0.0`, and adjust other dependencies.

## 1.3.5

- Updated SDK version to 2.0.0-dev.17.0

## 1.3.4

* Modify code to eliminate Future flattening.

## 1.3.3

* Declare support for `async` 2.0.0.

## 1.3.2

* Update to make the code work with strong-mode clean Zone API.

* Required minimum SDK of 1.23.0.

## 1.3.1

* Fix the type annotation of `Pool.withResource()` to indicate that it takes
  `() -> FutureOr<T>`.

## 1.3.0

* Add a `Pool.done` getter that returns the same future returned by
  `Pool.close()`.

## 1.2.4

* Fix a strong-mode error.

## 1.2.3

* Fix a bug in which `Pool.withResource()` could throw a `StateError` when
  called immediately before closing the pool.

## 1.2.2

* Fix strong mode warnings and add generic method annotations.

## 1.2.1

* Internal changes only.

## 1.2.0

* Add `Pool.close()`, which forbids new resource requests and releases all
  releasable resources.

## 1.1.0

* Add `PoolResource.allowRelease()`, which allows a resource to indicate that it
  can be released without forcing it to deallocate immediately.

## 1.0.2

* Fixed the homepage.

## 1.0.1

* A `TimeoutException` is now correctly thrown if the pool detects a deadlock.
