- Drop support for GHC < 8.10.
- Use STM based lockless implementation as it results in much better throughput in a multi-threaded environment when number of stripes is not equal to the number of capabilities (in particular with a single stripe).
- Stop running resource freeing functions within
uninterruptibleMask. destroyResourceno longer ignores exceptions thrown from resource releasing functions.- Change the default number of stripes to 1.
- Do not exceed the maximum number of resources if the number of stripes does not divide it.
- Add support for assigning a label to the pool.
- Require
poolMaxResourcesto be not smaller than the number of stripes. - Add support for setting the number of stripes.
- Hide the constructor of
PoolConfigfrom the public API and providedefaultPoolConfigso that future additions toPoolConfigdon't require major version bumps.
- Add
tryWithResourceandtryTakeResource.
- Rewrite based on
Control.Concurrent.QSemfor better throughput and latency. - Make release of resources asynchronous exceptions safe.
- Remove dependency on
monad-control. - Expose the
.Internalmodule. - Add support for introspection.
- Add
PoolConfig.