docs: refine task stealing documentation
[poolifier.git] / CHANGELOG.md
index 2fcf3b222d91f50c7280d99fd09ed69445b7b7e0..19b7b283d14a7691c913b59640a433b1b4deb5c4 100644 (file)
@@ -7,13 +7,206 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 ## [Unreleased]
 
+## [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
+
+### Fixed
+
+- Fix queued tasks rescheduling.
+
+### Changed
+
+- Rename tasks queue options `queueMaxSize` to `size`.
+
+### Added
+
+- Task stealing scheduling algorithm if tasks queueing is enabled.
+
+## [2.6.32] - 2023-08-23
+
+### Fixed
+
+- Ensure no task can be executed when the pool is destroyed.
+
+### 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 dynamic worker creation usage.
+- 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
 
@@ -68,7 +261,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 
 - 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.
+- SMTP client pool example: nodemailer.
 
 ## [2.6.25] - 2023-08-13
 
@@ -504,7 +697,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 - Optimize worker alive status check.
 - BREAKING CHANGE: Rename worker choice strategy `LESS_RECENTLY_USED` to `LESS_USED`.
 - Optimize `LESS_USED` worker choice strategy.
-- Update benchmarks versus external threads pools.
+- Update benchmark versus external threads pools.
 - Optimize tasks usage statistics requirements for worker choice strategy.
 
 ### Fixed
@@ -526,7 +719,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 - Optimize worker alive status check.
 - BREAKING CHANGE: Rename worker choice strategy `LESS_RECENTLY_USED` to `LESS_USED`.
 - Optimize `LESS_USED` worker choice strategy.
-- Update benchmarks versus external threads pools.
+- Update benchmark versus external threads pools.
 
 ### Fixed
 
@@ -692,7 +885,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
 ### Changed
 
 - Optimize fair share task scheduling algorithm implementation.
-- Update benchmarks versus external pools results with latest version.
+- Update benchmark versus external pools results with latest version.
 
 ## [2.3.3] - 2022-10-15