+## [3.1.21] - 2024-02-22
+
+### Fixed
+
+- Fix null exception regression: [#1496](https://github.com/poolifier/poolifier/issues/1496).
+
+## [3.1.20] - 2024-02-11
+
+### Fixed
+
+- Ensure `worker_threads` workers are unreferenced at termination.
+
+## [3.1.19] - 2024-01-16
+
+### Fixed
+
+- Fix possible null exception at task finishing handling.
+
+### Changed
+
+- Optimize Deque implementation to improve tasks queueing performance.
+
+## [3.1.18] - 2024-01-06
+
+### Fixed
+
+- Fix dynamic pool with minimum number of workers set to zero: [#1748](https://github.com/poolifier/poolifier/issues/1748).
+
+## [3.1.17] - 2024-01-05
+
+### Changed
+
+- Improve performance by clean up unneeded condition checks on hot code paths.
+
+## [3.1.16] - 2024-01-03
+
+### Fixed
+
+- Add missing type to TS type definitions.
+
+## [3.1.15] - 2024-01-02
+
+### Fixed
+
+- Fix CommonJS support with TypeScript: [#1821](https://github.com/poolifier/poolifier/issues/1821).
+
+## [3.1.15-0] - 2024-01-02
+
+### Fixed
+
+- Fix CommonJS support with TypeScript: [#1821](https://github.com/poolifier/poolifier/issues/1821).
+
+## [3.1.14] - 2024-01-01
+
+### Fixed
+
+- Properly handle dynamic pool with zero minimum size.
+
+## [3.1.13] - 2023-12-30
+
+### Changed
+
+- Reduce branching in several hot code paths.
+- Use faster object cloning implementation.
+
+## [3.1.12] - 2023-12-27
+
+### Fixed
+
+- Fix tasks redistribution triggers at pool destroying.
+
+### Changed
+
+- Switch TypeScript module resolution to Node16.
+
+## [3.1.12-0] - 2023-12-27
+
+### Fixed
+
+- Fix tasks redistribution triggers at pool destroying.
+
+## [3.1.11] - 2023-12-24
+
+### Fixed
+
+- Avoid worker node cross tasks stealing.
+- Ensure only half the pool worker nodes can steal tasks.
+
+## [3.1.10] - 2023-12-23
+
+### Changed
+
+- Avoid useless branching on pool type.
+
+## [3.1.9] - 2023-12-22
+
+### Changed
+
+- Readd ThreadPoolOptions and ClusterPoolOptions TS type aliases to PoolOptions.
+
+## [3.1.8] - 2023-12-21
+
+### Fixed
+
+- Fix default worker weight computation.
+- Fix possible null exception at pool destroying.
+
+## [3.1.7] - 2023-12-20
+
+### Fixed
+
+- Ensure worker choice strategies implementation wait for worker node readiness: [#1748](https://github.com/poolifier/poolifier/issues/1748).
+
+## [3.1.6] - 2023-12-18
+
+### Fixed
+
+- Fix pool destroying with tasks queuing enabled.
+
+## [3.1.5] - 2023-12-18
+
+### Added
+
+- Add queued tasks end timeout support to worker node termination.
+
+## [3.1.4] - 2023-12-18
+
+### Fixed
+
+- Make more robust the fix for possible null exception at handling task execution response.
+
+## [3.1.3] - 2023-12-17
+
+### Fixed
+
+- Fix possible null exception at handling task execution response.
+
+## [3.1.2] - 2023-12-17
+
+### Fixed
+
+- Wait for queued tasks to end at worker node termination.
+
+## [3.1.1] - 2023-12-16
+
+### Fixed
+
+- Fix pool options TS type definition.
+
+## [3.1.0] - 2023-12-16
+
+### Changed
+
+- TypeScript breaking change: merge ThreadPoolOptions and ClusterPoolOptions types into PoolOptions type.
+
+## [3.0.14] - 2023-12-13
+
+### Fixed
+
+- Fix possible null exception with worker_threads pools.
+
+## [3.0.13] - 2023-12-12
+
+### Fixed
+
+- Ensure worker choice strategy wait for worker nodes readiness.
+
+### Changed
+
+- Remove infinite retries support in worker choice strategy to avoid configuration leading to possible infinite recursion or loop.
+
+## [3.0.12] - 2023-12-12
+
+### Changed
+
+- Add infinite retries support in worker choice strategy.
+
+## [3.0.11] - 2023-12-11
+
+### Fixed
+
+- Ensure pool asynchronous resource properly track tasks execution.
+
+## [3.0.10] - 2023-12-08
+
+### Changed
+
+- Add a fastpath when tasks stealing or redistribution is impossible.
+
+## [3.0.9] - 2023-11-26
+
+### Fixed
+
+- Remove all pool events listener at pool destroying.
+- Remove all worker node events listener at worker node destroying.
+- Fix worker node event emitter listeners handling memory leak at pool options runtime change.
+
+## [3.0.8] - 2023-11-25
+
+### Fixed
+
+- Ensure continuous tasks stealing on idle start at worker node idling.
+
+## [3.0.7] - 2023-11-24
+
+### Changed
+
+- Make continuous tasks stealing start at worker node idling.
+
+## [3.0.6] - 2023-11-24
+
+### Fixed
+
+- Ensure pool statuses are checked at initialization, `start()` or `destroy()`.
+- Ensure pool `ready` event can be emitted after several `start()/destroy()` cycles.
+
+## [3.0.5] - 2023-10-27
+
+### Fixed
+
+- Ensure pool `ready` event can be emitted only once.
+
+## [3.0.4] - 2023-10-20
+
+### Changed
+
+- Switch to Bencher for benchmarking: [https://bencher.dev/perf/poolifier](https://bencher.dev/perf/poolifier).
+- Use builtin retry mechanism in worker choice strategies instead of custom one.
+
+## [3.0.3] - 2023-10-19
+
+### Fixed
+
+- Avoid null exception at sending message to worker.
+- Avoid null exception at checking worker node readiness.
+
+## [3.0.2] - 2023-10-17
+
+### Fixed
+
+- Fix race condition at dynamic worker node task assignment and scheduled removal. See issue [#1468](https://github.com/poolifier/poolifier/issues/1468) and [#1496](https://github.com/poolifier/poolifier/issues/1496).
+
+## [3.0.1] - 2023-10-16
+
+### Fixed
+
+- Workaround possible race condition at work nodes array element removal and querying. See issue [#1468](https://github.com/poolifier/poolifier/issues/1468).
+
+### Changed
+
+- Switch the worker node eventing code to `EventTarget` API.
+
+## [3.0.0] - 2023-10-08
+
+### Changed
+
+- Remove Node.js 16.x.x (EOL) support.
+
+## [2.7.5] - 2023-10-03
+
+### Changed
+
+- Use `EventEmitterAsyncResource` type from `@types/node` for pool event emitter. TypeScript users will need to update to latest `@types/node` version.
+
+## [2.7.4] - 2023-09-25
+
+### Fixed
+
+- Fix source maps (bundler issue).
+
+## [2.7.3] - 2023-09-24
+
+### Changed
+
+- Convert pool event emitter to event emitter async resource.
+
+## [2.7.2] - 2023-09-23
+
+### Changed
+
+- Add source maps to npm package to ease debugging.
+
+### Added
+
+- Continuous benchmarking versus other worker pools: [https://poolifier.github.io/benchmark](https://poolifier.github.io/benchmark).
+
+## [2.7.1] - 2023-09-20
+
+### Fixed
+
+- Ensure worker message listener used one time are removed after usage.
+
+## [2.7.0] - 2023-09-19
+
+### Fixed
+
+- Fix task stealing related tasks queue options handling at runtime.
+
+### Changed
+
+- Rename `listTaskFunctions()` to `listTaskFunctionNames()` in pool and worker API.
+
+### Added
+
+- Add `hasTaskFunction()`, `addTaskFunction()`, `removeTaskFunction()`, `setDefaultTaskFunction()` methods to pool API: [PR #1148](https://github.com/poolifier/poolifier/pull/1148).
+- Stricter worker constructor arguments validation.
+
+## [2.6.45] - 2023-09-17
+
+### Changed
+
+- Disable publication on GitHub packages registry on release until authentication issue is fixed.
+
+### Added
+
+- Add `startWorkers` to pool options to whether start the minimum number of workers at pool initialization or not.
+- Add `start()` method to pool API to start the minimum number of workers.
+- Add `taskStealing` and `tasksStealingOnPressure` to tasks queue options to whether enable task stealing or not and whether enable tasks stealing under back pressure or not.
+- Continuous internal benchmarking: [https://poolifier.github.io/benchmark-results/dev/bench](https://poolifier.github.io/benchmark-results/dev/bench).
+
+## [2.6.44] - 2023-09-08
+
+### Fixed
+
+- Use a dedicated PAT to publish on GitHub packages registry.
+
+### Added
+
+- Publish on GitHub packages registry on release.
+
+### Changed
+
+- Switch from rome to biome: [PR #1128](https://github.com/poolifier/poolifier/pull/1128).
+
+## [2.6.43] - 2023-09-08
+
+### Added
+
+- Publish on GitHub packages registry on release.
+
+### Changed
+
+- Switch from rome to biome: [PR #1128](https://github.com/poolifier/poolifier/pull/1128).
+
+## [2.6.42] - 2023-09-06
+
+### Changed
+
+- Optimize hot code paths implementation: avoid unnecessary branching, add and use optimized helpers (min, max), use reduce() array helper, ...
+
+## [2.6.41] - 2023-09-03
+
+### Changed
+
+- Optimize worker choice strategies implementation.
+
+## [2.6.40] - 2023-09-01
+
+### Fixed
+
+- Do not pre-choose in WRR worker choice strategy to avoid bias.
+- Avoid array out of bound in worker choice strategies after worker node removal.
+
+## [2.6.39] - 2023-08-30
+
+### Fixed
+
+- Fix race condition in worker choice strategies at worker node info querying while not yet initialized.
+
+## [2.6.38] - 2023-08-30
+
+### Added
+
+- Bundle typescript types declaration into one file.
+
+### Changed
+
+- Improve interleaved weighted round robin worker choice strategy implementation.
+
+## [2.6.37] - 2023-08-28
+
+### Fixed
+
+- Ensure unused worker usage statistics are deleted at runtime.
+
+### Changed
+
+- Rename worker choice strategy options `choiceRetries` to `retries`.
+- Avoid unnecessary branching in worker choice strategies.
+
+## [2.6.36] - 2023-08-27
+
+### Fixed
+
+- Fix pool `execute()` arguments check.
+
+### Changed
+
+- Make continuous tasks stealing algorithm less aggressive.
+- Fine tune tasks stealing algorithm under back pressure.
+
+## [2.6.35] - 2023-08-25
+
+### Fixed
+
+- Don't account worker usage statistics for tasks that have failed.
+- Fix pool information runtime and wait time median computation.
+
+### Changed
+
+- Update simple moving average implementation to use a circular buffer.
+- Update simple moving median implementation to use a circular buffer.
+- Account for stolen tasks in worker usage statistics and pool information.
+
+### Added
+
+- Continuous tasks stealing algorithm.
+
+## [2.6.34] - 2023-08-24
+
+### Fixes
+
+- Avoid cascading tasks stealing under back pressure.
+
+### Changed
+
+- Add fastpath to queued tasks rescheduling.
+
+## [2.6.33] - 2023-08-24
+