X-Git-Url: https://git.piment-noir.org/?a=blobdiff_plain;f=CHANGELOG.md;h=2885241e38ccc0afa54b9ffd7a91a2ac60a2a4db;hb=HEAD;hp=a7dfea5fdb39383f2814cd281e61b93b3d12d795;hpb=f592ef16474a0643584871f6ea6a6de14950381a;p=poolifier.git diff --git a/CHANGELOG.md b/CHANGELOG.md index a7dfea5f..27b2a232 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,284 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ## [Unreleased] +## [4.0.13] - 2024-05-29 + +### Changed + +- Optimize tasks queue implementation. +- Enable prioritized tasks queueing only when necessary. + +## [4.0.12] - 2024-05-25 + +### Changed + +- Optimize circular buffer implementation to store task execution measurements. + +## [4.0.11] - 2024-05-21 + +### Changed + +- Switch to optimized circular buffer implementation to store task execution measurements. + +## [4.0.10] - 2024-05-20 + +### Fixed + +- Ensure tasks stealing dynamic worker node is not destroyed on inactivity. + +## [4.0.9] - 2024-05-19 + +### Changed + +- Add ELU `utilization` statistics to pool information. + +## [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, 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 @@ -17,7 +295,7 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0 ### Fixed -- Wait for queued tasks to end at worker termination. +- Wait for queued tasks to end at worker node termination. ## [3.1.1] - 2023-12-16 @@ -193,7 +471,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