X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=CHANGELOG.md;h=8b7d694d2dfaa3f424ad0cbbff3a1565894b4363;hb=f8496b2247cb7e47192173307d690c33c4deaf2c;hp=6ac71e7c3013be7b954c20b9aab6e46a88f41cf6;hpb=d7af6e8c88ac0d28dbe94e191aae39ea21d09018;p=poolifier.git diff --git a/CHANGELOG.md b/CHANGELOG.md index 6ac71e7c..8b7d694d 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,10 +7,244 @@ 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 on 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 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 @@ -27,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 @@ -76,7 +310,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 @@ -184,7 +418,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 @@ -199,7 +433,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. @@ -215,7 +449,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. @@ -463,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 @@ -485,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 @@ -651,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