refactor: remove duplicate import in examples
[poolifier.git] / CHANGELOG.md
index dba4ff69dc8d702b2a0ea88d22abf184d2258e5a..8d1da82330d9378b9eb1705c90269beb8625ddce 100644 (file)
@@ -7,11 +7,176 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 ## [Unreleased]
 
+### Added
+
+- Add kill handler to worker options allowing to execute custom code when worker is killed.
+
+## [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
+
+- Improve code documentation.
+- Code refactoring and cleanup for better maintainability and readability.
+
+## [2.6.20] - 2023-07-21
+
+### Fixed
+
+- Fix queued tasks redistribution on error task execution starvation.
+- Ensure task queueing per worker condition is untangled from the pool busyness semantic.
+
+### Changed
+
+- Drastically reduce lookups by worker in the worker nodes.
+
+## [2.6.19] - 2023-07-20
+
+### Added
+
+- Dedicated internal communication channel for worker_threads pools.
+
+## [2.6.18] - 2023-07-19
+
+### Changed
+
+- Code refactoring and cleanup for better maintainability and readability. Bundle size is a bit smaller.
+
+## [2.6.17] - 2023-07-16
+
+### Added
+
+- Add `listTaskFunctions()` method to worker class.
+
+## [2.6.16] - 2023-07-12
+
+### Fixed
+
+- Fix pool startup detection.
+- Fix worker task functions handling.
+
+## [2.6.15] - 2023-07-11
+
+### Added
+
+- Take into account worker node readiness in worker choice strategies.
+
+## [2.6.14] - 2023-07-10
+
+### Fixed
+
+- Fix task function statistics tracking.
+
+## [2.6.13] - 2023-07-10
+
+### Added
+
+- Add per task function statistics tracking.
+- Add public methods to manipulate the worker task functions at runtime.
+
+## [2.6.12] - 2023-07-09
+
+### Fixed
+
+- Workaround import issue with `node:os` module in node 16.x.x.
+
+## [2.6.11] - 2023-07-09
+
+### Fixed
+
+- Fix pool readiness semantic.
+
+## [2.6.10] - 2023-07-08
+
+### Fixed
+
+- Ensure workers are not recreated on error at pool startup.
+
+### Added
+
+- Add `ready` and `strategy` fields to pool information.
+- Add pool event `ready` to notify when the number of workers created in the pool has reached the maximum size expected and are ready.
+- Add dynamic pool sizing checks.
+
+## [2.6.9] - 2023-07-07
+
+### Fixed
+
+- Recreate the right worker type on uncaught exception.
+
+### Added
+
+- Add minimum and maximum to internal measurement statistics.
+- Add `runTime` and `waitTime` to pool information.
+- Check worker inactive time only on dynamic worker.
+
+## [2.6.8] - 2023-07-03
+
+### Fixed
+
+- Brown paper bag release to fix version handling in pool information.
+
+## [2.6.7] - 2023-07-03
+
+### Fixed
+
+- Ensure worker queued tasks at error are reassigned to other pool workers.
+
+### Added
+
+- Add pool `utilization` ratio to pool information.
+- Add `version` to pool information.
+- Add worker information to worker nodes.
+
+## [2.6.6] - 2023-07-01
+
+### Added
+
+- Add safe helper `availableParallelism` to help sizing the pool.
+
+### Fixed
+
+- Ensure message handler is only registered in worker.
+
 ## [2.6.5] - 2023-06-27
 
 ### Known issues
 
-- Cluster pools tasks execution are not working: https://github.com/poolifier/poolifier/issues/782
+- Cluster pools tasks execution are not working by using ESM files extension: https://github.com/poolifier/poolifier/issues/782
 
 ### Fixed
 
@@ -22,13 +187,13 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 ### Removed
 
-- Remove unneeded worker-threads worker `MessageChannel` internal usage for IPC.
+- Remove unneeded worker_threads worker `MessageChannel` internal usage for IPC.
 
 ## [2.6.4] - 2023-06-27
 
 ### Known issues
 
-- Cluster pools tasks execution are not working: https://github.com/poolifier/poolifier/issues/782
+- Cluster pools tasks execution are not working by using ESM files extension: https://github.com/poolifier/poolifier/issues/782
 
 ### Fixed
 
@@ -38,7 +203,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 ### Removed
 
-- Remove unneeded worker-threads worker `MessageChannel` internal usage for IPC.
+- Remove unneeded worker_threads worker `MessageChannel` internal usage for IPC.
 
 ## [2.6.3] - 2023-06-19
 
@@ -61,7 +226,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
 
@@ -95,7 +260,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 ### Changed
 
 - Compute statistics at the worker level only if needed.
-- Add `worker-threads` options to thread pool options.
+- Add `worker_threads` options to thread pool options.
 
 ### Fixed
 
@@ -179,7 +344,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 ### Fixed
 
-- Fix typescript type definition for worker function: ensure the input data is optional.
+- Fix typescript type definition for task function: ensure the input data is optional.
 - Fix typescript type definition for pool execute(): ensure the input data is optional.
 
 ## [2.4.9] - 2023-04-15
@@ -196,7 +361,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 ### Fixed
 
-- Fix worker function type definition and validation.
+- Fix task function type definition and validation.
 - Fix worker choice strategy options handling.
 
 ## [2.4.8] - 2023-04-12
@@ -373,7 +538,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
 
@@ -383,7 +548,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
 
@@ -395,7 +560,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
 
@@ -510,7 +675,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
 
@@ -576,7 +741,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