build(deps-dev): apply updates
[poolifier.git] / CHANGELOG.md
index b33680eef023ded853e3be8f2b2b2905a63be939..1cecddc68287d27bd42e4efc941cdf463ddf1f5d 100644 (file)
@@ -7,12 +7,273 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 ## [Unreleased]
 
-## [3.1.0] - 2023-12-16
+## [4.0.8] - 2024-05-15
+
+### Fixed
+
+- Fix default task function worker choice strategy and priority handling.
+
+## [4.0.7] - 2024-05-13
+
+### Changed
+
+- Add ELU statistics to pool information.
+
+## [4.0.6] - 2024-05-10
+
+### Fixed
+
+- Fix pools' `addTaskFunction()` type definition.
+
+## [4.0.5] - 2024-05-09
+
+### Fixed
+
+- Avoid queued tasks redistribution on the errored worker node.
+
+## [4.0.4] - 2024-05-08
+
+### Fixed
+
+- Disable `tasksStealingOnBackPressure` by default until performance issues under heavy load are sorted out.
+
+## [4.0.3] - 2024-05-08
+
+### Changed
+
+- Optimize task(s) stealing by dequeuing task(s) from the last prioritized bucket.
+
+## [4.0.2] - 2024-05-06
+
+### Fixed
+
+- Ensure poolifier worker task performance measurement requirements are synchronized with task function objects' worker choice strategies.
+
+## [4.0.1] - 2024-05-02
+
+### Fixed
+
+- Ensure dynamic worker node are initialized with sensible worker node usage default values to avoid worker choice strategies biased decisions.
+- Account for tasks wait time in task execution time computation in worker choice strategies to avoid biased decisions under load with several prioritized task functions and tasks queue enabled.
+
+## [4.0.0] - 2024-04-30
+
+### Changed
+
+- Support per task function(s) priority and worker choice strategy definition via a task function object: `{ taskFunction: (data?: Data) => Response | Promise<Response>, priority?: number, strategy?: WorkerChoiceStrategy }`.
+- Add priority queue based tasks queueing. One priority queue is divided into prioritized buckets to avoid queued tasks starvation under load.
+- BREAKING CHANGE: `listTaskFunctionNames()` to `listTaskFunctionsProperties()` in pool and worker API returning registered task functions properties.
+- BREAKING CHANGE: `strategy` field in pool information renamed to `defaultStrategy`.
+
+### Fixed
+
+- Ensure worker choice strategy options changes at runtime are propagated to poolifier workers.
+
+## [3.1.30] - 2024-04-22
+
+### Fixed
+
+- Fix `transferList` argument type definition.
+
+## [3.1.29] - 2024-04-02
+
+### Fixed
+
+- Fix possible race condition at worker node recreation on worker `error` and `exit` events.
+
+## [3.1.28] - 2024-04-01
+
+### Fixed
+
+- Ensure the minimum number of workers on a started pool is guaranteed.
+
+## [3.1.27] - 2024-03-27
+
+### Fixed
+
+- Fix publishing on JSR, take 4.
+
+## [3.1.26] - 2024-03-27
+
+### Fixed
+
+- Fix publishing on JSR, take 3.
+
+## [3.1.25] - 2024-03-27
+
+### Fixed
+
+- Fix publishing on JSR, take 2.
+
+## [3.1.24] - 2024-03-27
+
+### Fixed
+
+- Fix publishing on JSR.
+
+## [3.1.23] - 2024-03-27
+
+### Changed
+
+- Publish on JSR.
+
+## [3.1.22] - 2024-03-15
+
+### Fixed
+
+- Fix pool event emitter registered callbacks removal at `destroy()`.
+
+## [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.
@@ -179,7 +440,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 - 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.
+- Add `taskStealing` and `tasksStealingOnBackPressure` 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