refactor: remove unused queue code
[poolifier.git] / CHANGELOG.md
index d30639cea44d0638f496605398e01d048bbbfaf9..0fe43abdff91300f83c2d96a3fef74b238a534fe 100644 (file)
@@ -7,6 +7,113 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 ## [Unreleased]
 
+### Added
+
+- Add `queueMaxSize` option to tasks queue options.
+- Add O(1) deque implementation implemented with doubly linked list and use it for tasks queueing.
+- Add tasks stealing algorithm when a worker node queue is back pressured if tasks queueing is enabled.
+
+## [2.6.31] - 2023-08-20
+
+### Fixed
+
+- Fix worker choice strategy retries mechanism in some edge cases.
+
+### Changed
+
+- Make orthogonal worker choice strategies tasks distribution and created dynamic worker usage.
+- Remove the experimental status of the `LEAST_ELU` worker choice strategy.
+
+## [2.6.30] - 2023-08-19
+
+### Fixed
+
+- Ensure pool event `backPressure` is emitted.
+- Ensure pool event `full` is emitted only once.
+- Ensure worker node cannot be instantiated without proper arguments.
+
+## [2.6.29] - 2023-08-18
+
+### Fixed
+
+- Fix race condition between ready and task functions worker message handling at startup.
+- Fix duplicate task function worker usage statistics computation per task function.
+- Update task function worker usage statistics if and only if there's at least two different task functions.
+- Fix race condition at task function worker usage executing task computation leading to negative value.
+
+### Added
+
+- Add back pressure detection on the worker node queue. Event `backPressure` is emitted when all worker node queues are full (worker node queue size >= poolMaxSize^2).
+- Use back pressure detection in worker choice strategies.
+- Add worker choice strategies retries mechanism if no worker is eligible.
+
+## [2.6.28] - 2023-08-16
+
+### Fixed
+
+- Ensure pool workers are properly initialized.
+
+### Added
+
+- HTTP server pool examples: express-cluster, express-hybrid.
+
+### Changed
+
+- Remove now useless branching in worker hot code path.
+
+## [2.6.27] - 2023-08-15
+
+### Fixed
+
+- Add `KillHandler` type definition to exported types.
+
+### Added
+
+- Add `destroy` event to pool API.
+
+## [2.6.26] - 2023-08-15
+
+### Added
+
+- Add kill handler to worker options allowing to execute custom code when worker is killed.
+- Add `listTaskFunctions()` method to pool API.
+- SMTP server pool example: nodemailer.
+
+## [2.6.25] - 2023-08-13
+
+### Added
+
+- HTTP server pool examples: fastify-cluster, fastify-hybrid.
+- WebSocket server pool examples: ws-cluster, ws-hybrid.
+
+## [2.6.24] - 2023-08-12
+
+### Added
+
+- Add array of transferable objects to the `execute()` method arguments.
+- WebSocket server pool examples: ws-worker_threads.
+
+## [2.6.23] - 2023-08-11
+
+### Fixed
+
+- Fix pool busyness semantic when tasks queueing is enabled: the pool is busy when the number of executing tasks on each worker has reached the maximum tasks concurrency per worker.
+
+### Added
+
+- HTTP client pool examples: fetch, node-fetch and axios with multiple task functions.
+- HTTP server pool examples: express-worker_threads, fastify-worker_threads.
+
+## [2.6.22] - 2023-08-10
+
+### Fixed
+
+- Add missing `types` field to package.json `exports`.
+
+### Changed
+
+- Structure markdown documentation (PR #811).
+
 ## [2.6.21] - 2023-08-03
 
 ### Changed
@@ -19,7 +126,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 ### Fixed
 
 - Fix queued tasks redistribution on error task execution starvation.
-- Ensure task queueing per worker condition is untangled from the pool busyness semantic.
+- Ensure tasks queueing per worker condition is untangled from the pool busyness semantic.
 
 ### Changed
 
@@ -41,7 +148,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 ### Added
 
-- Add `listTaskFunctions()` method to worker class.
+- Add `listTaskFunctions()` method to worker API.
 
 ## [2.6.16] - 2023-07-12
 
@@ -127,7 +234,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 ### Added
 
-- Add safe helper `availableParallelism` to help sizing the pool.
+- Add safe helper `availableParallelism()` to help sizing the pool.
 
 ### Fixed
 
@@ -142,7 +249,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 ### Fixed
 
 - Artificial version bump to 2.6.5 to workaround publication issue.
-- Ensure cluster pool destroy() gracefully shutdowns worker's server.
+- Ensure cluster pool `destroy()` gracefully shutdowns worker's server.
 - Ensure pool event is emitted before task error promise rejection.
 - Fix queued tasks count computation.
 
@@ -158,7 +265,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 ### Fixed
 
-- Ensure cluster pool destroy() gracefully shutdowns worker's server.
+- Ensure cluster pool `destroy()` gracefully shutdowns worker's server.
 - Ensure pool event is emitted before task error promise rejection.
 - Fix queued tasks count computation.
 
@@ -187,7 +294,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 ### Added
 
-- Add worker choice strategy documentation: [README.md](./src/pools/selection-strategies/README.md).
+- Add worker choice strategy documentation: [README.md](./docs/worker-choice-strategies.md).
 
 ### Fixed
 
@@ -499,7 +606,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 ### Fixed
 
-- Fix `exports` syntax for ESM and CommonJS.
+- Fix package.json `exports` syntax for ESM and CommonJS.
 
 ### Changed
 
@@ -509,7 +616,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 ### Fixed
 
-- Fix `exports` syntax for ESM and CommonJS.
+- Fix package.json `exports` syntax for ESM and CommonJS.
 
 ## [2.3.10-1] - 2023-03-18
 
@@ -521,7 +628,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 ### Fixed
 
-- Fix `exports` syntax for ESM and CommonJS.
+- Fix package.json `exports` syntax for ESM and CommonJS.
 
 ## [2.3.9] - 2023-03-18
 
@@ -636,7 +743,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 ### Breaking Changes
 
-- Support only NodeJS version 16.x.x for cluster pool: upstream cluster API have changed on that version.
+- Support only Node.js version 16.x.x for cluster pool: upstream cluster API have changed on that version.
 
 ## [2.1.0] - 2021-08-29
 
@@ -702,7 +809,7 @@ const { DynamicThreadPool } = require('poolifier')
 #### New type definitions for input data and response
 
 For cluster worker and worker-thread pools, you can now only send and receive structured-cloneable data.  
-_This is not a limitation by poolifier but NodeJS._
+_This is not a limitation by poolifier but Node.js._
 
 #### Public property replacements