Apply dependencies update
[poolifier.git] / CHANGELOG.md
... / ...
CommitLineData
1# Changelog
2
3All notable changes to this project will be documented in this file.
4
5The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
8## [Unreleased]
9
10### Changed
11
12- Improve benchmarks: add IO intensive task workload, add task size option, integrate code into linter.
13- Optimize tasks usage lookup implementation.
14
15## [2.3.4] - 2022-10-17
16
17### Added
18
19- Fully automate release process with release-it.
20
21### Changed
22
23- Optimize fair share task scheduling algorithm implementation.
24- Update benchmarks versus external pools results with latest version.
25
26## [2.3.3] - 2022-10-15
27
28### Added
29
30- Add support for [cluster settings](https://nodejs.org/api/cluster.html#cluster_cluster_settings) in cluster pool options.
31
32## [2.3.2] - 2022-10-14
33
34### Changed
35
36- Optimize fair share worker selection strategy implementation.
37
38### Fixed
39
40- Fix WRR worker selection strategy: ensure the condition triggering the round robin can be fulfilled.
41
42## [2.3.1] - 2022-10-13
43
44### Added
45
46- Pool worker choice strategies:
47 - `WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN` strategy based on weighted round robin scheduling algorithm using tasks execution time for now.
48 - `WorkerChoiceStrategies.FAIR_SHARE` strategy based on fair share scheduling algorithm using tasks execution time for now.
49
50## [2.2.2] - 2022-10-09
51
52### Fixed
53
54- Fixed `README.md` file.
55
56## [2.2.1] - 2022-10-08
57
58### Added
59
60- Dynamic worker choice strategy change at runtime.
61
62## [2.2.0] - 2022-01-05
63
64### Breaking Changes
65
66- Support only NodeJS version 16.x.x for cluster pool: upstream cluster API have changed on that version.
67
68## [2.1.0] - 2021-08-29
69
70### Added
71
72- Add an optional pool option `messageHandler` to `PoolOptions<Worker>` for registering a message handler callback on each worker.
73
74### Breaking Changes
75
76- `AbstractWorker` class `maxInactiveTime`, `killBehavior` and `async` attributes have been removed in favour of the same ones in the worker options `opts` public attribute.
77- `AbstractWorker` class `lastTask` attribute have been renamed to `lastTaskTimestamp`.
78- `AbstractWorker` class `interval` attribute have been renamed to `aliveInterval`.
79- `AbstractWorker` class cannot be instantiated without specifying the `mainWorker` argument referencing the main worker.
80
81## [2.0.2] - 2021-05-12
82
83### Bug fixes
84
85- Fix `busy` event emission on fixed pool type
86
87## [2.0.1] - 2021-03-16
88
89### Bug fixes
90
91- Check if pool options are properly set.
92- `busy` event is emitted on all pool types.
93
94## [2.0.0] - 2021-03-01
95
96### Bug fixes
97
98- Now a thread/process by default is not deleted when the task submitted take more time than maxInactiveTime configured (issue #70).
99
100### Breaking Changes
101
102- `FullPool` event is now renamed to `busy`.
103- `maxInactiveTime` on `ThreadWorker` default behavior is now changed, if you want to keep the old behavior set `killBehavior` to `KillBehaviors.HARD`.
104 _Find more details on our JSDoc._
105
106- `maxTasks` option on `FixedThreadPool` and `DynamicThreadPool` is now removed since is no more needed.
107
108- We changed some internal structures, but you shouldn't be too affected by them as these are internal changes.
109
110### Pool options types declaration merge
111
112`FixedThreadPoolOptions` and `DynamicThreadPoolOptions` type declarations have been merged to `PoolOptions<Worker>`.
113
114#### New `export` strategy
115
116```js
117// Before
118const DynamicThreadPool = require('poolifier/lib/dynamic')
119// After
120const { DynamicThreadPool } = require('poolifier/lib/dynamic')
121```
122
123But you should always prefer just using
124
125```js
126const { DynamicThreadPool } = require('poolifier')
127```
128
129#### New type definitions for input data and response
130
131For cluster worker and worker-thread pools, you can now only send and receive serializable data.
132_This is not a limitation by poolifier but NodeJS._
133
134#### Public property replacements
135
136`numWorkers` property is now `numberOfWorkers`
137
138#### Internal (protected) properties and methods renaming
139
140These properties are not intended for end users
141
142- `id` => `nextMessageId`
143
144These methods are not intended for end users
145
146- `_chooseWorker` => `chooseWorker`
147- `_newWorker` => `createWorker`
148- `_execute` => `internalExecute`
149- `_chooseWorker` => `chooseWorker`
150- `_checkAlive` => `checkAlive`
151- `_run` => `run`
152- `_runAsync` => `runAsync`
153
154## [1.1.0] - 2020-05-21
155
156### Added
157
158- ThreadWorker support async functions as option
159- Various external library patches
160
161## [1.0.0] - 2020-01-24
162
163### Added
164
165- FixedThreadPool implementation
166- DynamicThreadPool implementation
167- WorkerThread implementation to improve developer experience