chore(deps-dev): apply updates
[poolifier.git] / CHANGELOG.md
CommitLineData
522eea03 1# Changelog
2
3All notable changes to this project will be documented in this file.
4
d4abc60a 5The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
522eea03 6and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
58ed84df
JB
8## [4.2.3](https://github.com/poolifier/poolifier/compare/v4.2.2...v4.2.3) (2024-08-19)
9
10
11### 🐞 Bug Fixes
12
13* account for all stealing worker nodes ([d967235](https://github.com/poolifier/poolifier/commit/d9672350c04638ef28b10b6f480e8e7cd89256f0))
14
15
16### ✨ Polish
17
18* define a variable only when needed ([4f28c7a](https://github.com/poolifier/poolifier/commit/4f28c7ae4e0c53cb328c4e5bdfe246f02fe1baf2))
19* display back pressured worker nodes in pool info ([8c7a518](https://github.com/poolifier/poolifier/commit/8c7a518dde490c0d370dff2e47ee86062d715dad))
20
21
22### 📚 Documentation
23
24* publish documentation ([e4db94f](https://github.com/poolifier/poolifier/commit/e4db94fc95fd5bb37fd446516f29b62fe38dc7fb))
25
26
27### 🤖 Automation
28
29* **deps-dev:** apply updates ([5a96b64](https://github.com/poolifier/poolifier/commit/5a96b64531b368fd4bf10225d48f7561fae4c90d))
30* **deps-dev:** bump @types/node in the regular group ([#2533](https://github.com/poolifier/poolifier/issues/2533)) ([b2cd95b](https://github.com/poolifier/poolifier/commit/b2cd95b7775f9a742a57de02d61a74dfef0aad24))
31* **deps-dev:** bump eslint-plugin-jsdoc in the regular group ([d20645f](https://github.com/poolifier/poolifier/commit/d20645fe19102bd39357bb23979f7684fe9fd5e3))
32* **deps-dev:** bump the regular group across 11 directories with 1 update ([#2534](https://github.com/poolifier/poolifier/issues/2534)) ([a9c233d](https://github.com/poolifier/poolifier/commit/a9c233d841db2bd396829465d16682e160e82093))
33* **deps:** bump the regular group across 11 directories with 2 updates ([c657b5d](https://github.com/poolifier/poolifier/commit/c657b5df7dc5bbd8b63f6b2ced8c5d7b574c5969))
34
8194cdd5
JB
35## [4.2.2](https://github.com/poolifier/poolifier/compare/v4.2.1...v4.2.2) (2024-08-14)
36
37
38### 🐞 Bug Fixes
39
40* fix race condition at task response handling during pool destroy ([b28533a](https://github.com/poolifier/poolifier/commit/b28533a38f984b6a28edf6edc53940bd85f24200))
41* workaround race conditions at pool destroy ([684f132](https://github.com/poolifier/poolifier/commit/684f132a0f46afc01f2e95ec004ecfd2548b8d49))
42
43
44### 📚 Documentation
45
46* publish documentation ([df66bb1](https://github.com/poolifier/poolifier/commit/df66bb1d802af27d29b1ca2e29b0b1c95636b0e1))
47
b3437ece
JB
48## [4.2.1](https://github.com/poolifier/poolifier/compare/v4.2.0...v4.2.1) (2024-08-14)
49
50
51### 🐞 Bug Fixes
52
53* ensure task stealing can't start twice on the same worker node ([37cc14e](https://github.com/poolifier/poolifier/commit/37cc14e81ea8e83ea2b78cf27e0e74f3c4694e21))
54* trigger continuous tasks stealing under proper conditions ([2663563](https://github.com/poolifier/poolifier/commit/2663563da5f52fd57be41127e5c789c86e969ae7))
55
56
57### ✨ Polish
58
59* remove unneeded condition at task response handling ([93df097](https://github.com/poolifier/poolifier/commit/93df097ec6c54af9f0d29df0cb61cb901f29fca4))
60
61
62### 📚 Documentation
63
64* publish documentation ([b4f9421](https://github.com/poolifier/poolifier/commit/b4f9421addf669cffe56d2f30f0fbab42dfe9755))
65* refine code comment about task stealing conditions ([80716e5](https://github.com/poolifier/poolifier/commit/80716e5039fb14c3731fa6b7f22334fcd4e5b314))
66
67
68### 🤖 Automation
69
70* **deps-dev:** bump eslint-plugin-jsdoc in the regular group ([#2525](https://github.com/poolifier/poolifier/issues/2525)) ([b9873cb](https://github.com/poolifier/poolifier/commit/b9873cbec16f627e05dfb354521c34540722df0c))
71* **deps:** bump the regular group across 11 directories with 2 updates ([#2526](https://github.com/poolifier/poolifier/issues/2526)) ([d3167a7](https://github.com/poolifier/poolifier/commit/d3167a7e6ee5dea226278a26813e6b64b49aa1d2))
72
85cf1890
JB
73## [4.2.0](https://github.com/poolifier/poolifier/compare/v4.1.0...v4.2.0) (2024-08-13)
74
75
76### 🚀 Features
77
78* reenable tasks stealing under back pressure by default ([f09b195](https://github.com/poolifier/poolifier/commit/f09b195471d82466f32dfbc3c3751202d4ea2f9a))
79
80
81### 🐞 Bug Fixes
82
83* protect worker node tasks queue from concurrent tasks stealing ([eebfd81](https://github.com/poolifier/poolifier/commit/eebfd819241181d59144f45b51f566fca0211fc5))
84
85
86### ⚡ Performance
87
88* do mapExecute() args sanity checks once ([390300c](https://github.com/poolifier/poolifier/commit/390300c363d3535fd622f07d54c40cfad9fdbb0b))
89
90
91### ✨ Polish
92
93* cleanup eslint configuration ([d5f06e4](https://github.com/poolifier/poolifier/commit/d5f06e40422119fca0b15562883f9060f466f673))
94* cleanup worker condition checks at task stealing ([d52d477](https://github.com/poolifier/poolifier/commit/d52d4773cc0ed2936aea894224a7edc3dab8359a))
95
96
97### 🧪 Tests
98
99* cleanup fixed pool tests setup and teardown ([311c5bd](https://github.com/poolifier/poolifier/commit/311c5bdbcf67f99f8cc8f066ecd92fc42a670f8d))
100* cleanup resources setup and teardown ([e1e0cb2](https://github.com/poolifier/poolifier/commit/e1e0cb25f128238f3f7b3a49f41fa5e5be236577))
101* remove duplicate tests ([55a9fbc](https://github.com/poolifier/poolifier/commit/55a9fbccadf29da6e3cb30471f3a5ce1e0d7c641))
102
103
104### 📚 Documentation
105
106* add documentation on enablePrority priority queue getter/setter ([3e53cc1](https://github.com/poolifier/poolifier/commit/3e53cc14e502b532f31536efefe84212c98ee024))
107* **api:** add missing tasksStealingRatio default value ([5b65da9](https://github.com/poolifier/poolifier/commit/5b65da9662b764070a8414e2cce53294f5fd9498))
108* publish documentation ([e57792c](https://github.com/poolifier/poolifier/commit/e57792c1bbb944b28efe0a34027ac1e35ffd62d5))
109
110
111### 🤖 Automation
112
113* **ci:** reenabled code auto formatting and linting ([31e5cb9](https://github.com/poolifier/poolifier/commit/31e5cb9aa2c33ea879afa99d649024495bb25a69))
114* **ci:** silence linter on examples ([6a2f448](https://github.com/poolifier/poolifier/commit/6a2f448092feecf09f4cfbb2578cdeef334c8ae3))
115* **deps-dev:** bump @commitlint/cli in the regular group ([#2518](https://github.com/poolifier/poolifier/issues/2518)) ([798d464](https://github.com/poolifier/poolifier/commit/798d46431c8b35674774ec0c64b343f5103b1d88))
116* **deps-dev:** bump @cspell/eslint-plugin from 8.11.0 to 8.12.1 ([cb4a4fd](https://github.com/poolifier/poolifier/commit/cb4a4fdfd62e2a5f5634f72ba7ced50186d28e7d))
117* **deps-dev:** bump @cspell/eslint-plugin from 8.12.1 to 8.13.0 ([#2490](https://github.com/poolifier/poolifier/issues/2490)) ([d94680b](https://github.com/poolifier/poolifier/commit/d94680bbed7f9eda7cde673afea03d67ed845600))
118* **deps-dev:** bump @cspell/eslint-plugin from 8.13.0 to 8.13.1 ([f4b46c2](https://github.com/poolifier/poolifier/commit/f4b46c288bdb341fc1190448ff6b628d5b0f434f))
119* **deps-dev:** bump @types/node ([898fb96](https://github.com/poolifier/poolifier/commit/898fb967397af40c848e856f7567dce2e4246b5a))
120* **deps-dev:** bump @types/node ([b83105c](https://github.com/poolifier/poolifier/commit/b83105cb20f971e62ffd4d9af8b8a02bbb603121))
121* **deps-dev:** bump @types/node ([30ccf3b](https://github.com/poolifier/poolifier/commit/30ccf3bee1938152352d7ac8698106527e4c541f))
122* **deps-dev:** bump @types/node ([72e99f3](https://github.com/poolifier/poolifier/commit/72e99f3f9850f4236f292a94fcf48f6ed08a62ce))
123* **deps-dev:** bump @types/node ([6032c66](https://github.com/poolifier/poolifier/commit/6032c66cfc168a7aa3cc690fd44a17e33ae505fc))
124* **deps-dev:** bump @types/node ([90a355a](https://github.com/poolifier/poolifier/commit/90a355a3c8d1f9f2bb3f726649d8dd194ea9aa29))
125* **deps-dev:** bump @types/node ([dc72c1f](https://github.com/poolifier/poolifier/commit/dc72c1f0c0cb7af045f263c1e676fddc8638ab51))
126* **deps-dev:** bump @types/node ([9072888](https://github.com/poolifier/poolifier/commit/9072888d09e8cec7b57e1a42db95a12cdae13f43))
127* **deps-dev:** bump @types/node ([4001e8f](https://github.com/poolifier/poolifier/commit/4001e8f12ee43978182130e3b0e21791a2a5abda))
128* **deps-dev:** bump @types/node ([4b3f7ff](https://github.com/poolifier/poolifier/commit/4b3f7ff2e5d62eca78e284b036e2bbb31ba57c30))
129* **deps-dev:** bump @types/node ([bffa27b](https://github.com/poolifier/poolifier/commit/bffa27b440f0d16c127360e547660a3fcfb20e1e))
130* **deps-dev:** bump @types/node ([51b8676](https://github.com/poolifier/poolifier/commit/51b86762f930675d14fa0ffd03979138bbf54d21))
131* **deps-dev:** bump @types/node ([84e2af2](https://github.com/poolifier/poolifier/commit/84e2af234d00ab6ab3eb5cec2fcd450f67f72626))
132* **deps-dev:** bump @types/node from 20.14.11 to 20.14.12 ([#2484](https://github.com/poolifier/poolifier/issues/2484)) ([b04790a](https://github.com/poolifier/poolifier/commit/b04790ac130cdcce1673f544c8a90cd572bbfff8))
133* **deps-dev:** bump @types/node from 22.0.2 to 22.1.0 ([e2c63d9](https://github.com/poolifier/poolifier/commit/e2c63d928d3f61085bc63ef0e2ed861827e44952))
134* **deps-dev:** bump eslint-plugin-jsdoc from 48.10.2 to 48.11.0 ([a335dbb](https://github.com/poolifier/poolifier/commit/a335dbb80f8ce31ec11c282d2dc4095d7356cbba))
135* **deps-dev:** bump eslint-plugin-jsdoc from 48.9.2 to 48.10.2 ([#2489](https://github.com/poolifier/poolifier/issues/2489)) ([7740dd2](https://github.com/poolifier/poolifier/commit/7740dd271aa7fbd4bcedf659b323813d6d72030f))
136* **deps-dev:** bump eslint-plugin-jsdoc in the major group ([#2519](https://github.com/poolifier/poolifier/issues/2519)) ([97be5ef](https://github.com/poolifier/poolifier/commit/97be5ef840aad32606fa1b0d0699fa5d99810028))
137* **deps-dev:** bump husky from 9.1.2 to 9.1.3 ([#2487](https://github.com/poolifier/poolifier/issues/2487)) ([788cee8](https://github.com/poolifier/poolifier/commit/788cee84f1e30debe570409c650df1ae9d67ab68))
138* **deps-dev:** bump rollup ([cc75e8e](https://github.com/poolifier/poolifier/commit/cc75e8e09934047cf1babb634275e6c5106f6871))
139* **deps-dev:** bump rollup ([b802739](https://github.com/poolifier/poolifier/commit/b802739585892c8184ec2ec55f0c49c477cadcdb))
140* **deps-dev:** bump rollup ([1d82f1e](https://github.com/poolifier/poolifier/commit/1d82f1e2c8f6e3762d746a3e091d6f266fa7313d))
141* **deps-dev:** bump rollup ([18ccae8](https://github.com/poolifier/poolifier/commit/18ccae8c892047167f16ccdc883776887d2d93d5))
142* **deps-dev:** bump rollup ([e45d209](https://github.com/poolifier/poolifier/commit/e45d209d147f46be21407a09f3aace31bcbffbe2))
143* **deps-dev:** bump rollup ([865b4f5](https://github.com/poolifier/poolifier/commit/865b4f5ac20df164a97de317a44e42ee0dd4b6a0))
144* **deps-dev:** bump rollup from 4.19.1 to 4.19.2 ([caf6fe3](https://github.com/poolifier/poolifier/commit/caf6fe30f20a5aee16e51dfc9026296974f4728b))
145* **deps-dev:** bump the regular group with 2 updates ([#2523](https://github.com/poolifier/poolifier/issues/2523)) ([cc9a0fb](https://github.com/poolifier/poolifier/commit/cc9a0fb31ab867c2b84f15f5cc61a85644753adb))
146* **deps-dev:** bump typedoc from 0.26.4 to 0.26.5 ([27433e0](https://github.com/poolifier/poolifier/commit/27433e06f8bff51b1462c1ecf2d17869551d7468))
147* **deps-dev:** update eslint-plugin-jsdoc to 50.2.0 ([25bf98e](https://github.com/poolifier/poolifier/commit/25bf98e1bc2eff8103e1eb67db9d7dde5cbf96b8))
148* **deps:** bump axios in /examples/typescript/http-client-pool ([#2501](https://github.com/poolifier/poolifier/issues/2501)) ([9c8c7b6](https://github.com/poolifier/poolifier/commit/9c8c7b629ce608a0dd7b87c8b4f03cc72842c44e))
149* **deps:** bump github/combine-prs from 5.0.0 to 5.1.0 ([#2476](https://github.com/poolifier/poolifier/issues/2476)) ([9c14720](https://github.com/poolifier/poolifier/commit/9c1472043fc2b5b77f16a271c26457a4a180e3f2))
150
acc41adc
JB
151## [4.1.0](https://github.com/poolifier/poolifier/compare/v4.0.18...v4.1.0) (2024-07-18)
152
153
154### 🚀 Features
155
156* add ratio of worker nodes in a pool allowed to perform concurrent tasks stealing ([e25f86b](https://github.com/poolifier/poolifier/commit/e25f86b30763ea5c2e5fc6c0ef16818b7e4efe83)), closes [#2284](https://github.com/poolifier/poolifier/issues/2284)
157
158
159### ✨ Polish
160
161* npx -> pnpm dlx where appropriates ([21b76dc](https://github.com/poolifier/poolifier/commit/21b76dc2ca538ea8691570e599b152d4d4dd50bd))
162
163
164### 🧪 Tests
165
166* fix error type expectation ([16196bc](https://github.com/poolifier/poolifier/commit/16196bc039fc80684b777cf4cd9e822e3293c339))
167
168
169### 📚 Documentation
170
171* **api.md:** add missing ToC entry ([989a71a](https://github.com/poolifier/poolifier/commit/989a71a5497bfeb445748022d241de083fa9d66b))
172* **api.md:** document tasksStealingRatio tasks queue option ([453c646](https://github.com/poolifier/poolifier/commit/453c6467536356616003ea3666fd4d14ef539e26))
173* publish documentation ([082fb4d](https://github.com/poolifier/poolifier/commit/082fb4db638f093fe284690eaf4764e0a2758184))
174
175
176### 🤖 Automation
177
178* **deps-dev:** bump @cspell/eslint-plugin from 8.10.4 to 8.11.0 ([ae8cecf](https://github.com/poolifier/poolifier/commit/ae8cecfc95719c815557f1d1b210d282dda350cd))
179* **deps-dev:** bump @types/node ([e1436e8](https://github.com/poolifier/poolifier/commit/e1436e89c8a3a0d83cf82dcc835b4ef10b3e9738))
180* **deps-dev:** bump husky from 9.0.11 to 9.1.0 ([#2474](https://github.com/poolifier/poolifier/issues/2474)) ([8b770d2](https://github.com/poolifier/poolifier/commit/8b770d22dba7dcb844c7aae2d16de414499ff9f6))
181* **deps-dev:** bump prettier from 3.3.2 to 3.3.3 ([#2469](https://github.com/poolifier/poolifier/issues/2469)) ([ed09ef1](https://github.com/poolifier/poolifier/commit/ed09ef1d80a2ba11abf2e276c1c4b3c4081979c1))
182* **deps-dev:** bump tatami-ng from 0.5.1 to 0.5.3 ([27ddec8](https://github.com/poolifier/poolifier/commit/27ddec8d142fab42db702118325d49ce0c1140cc))
183* **deps:** bump poolifier ([01afcb2](https://github.com/poolifier/poolifier/commit/01afcb2142ddf51db4de08aa85ff36408e1d34ea))
184* **deps:** bump poolifier ([f49f67f](https://github.com/poolifier/poolifier/commit/f49f67f853d84ab60a407f3bbaeea41c462bda83))
185* **deps:** bump poolifier ([ac181f4](https://github.com/poolifier/poolifier/commit/ac181f447618a6ca7206d13fdc17acafed0cd472))
186* **deps:** bump poolifier ([966953d](https://github.com/poolifier/poolifier/commit/966953ddd2798a4bb52e83fb054165e7cc2b2dca))
187* **deps:** bump poolifier ([d67aa39](https://github.com/poolifier/poolifier/commit/d67aa393b66234b305638f02aec075ceea5053d9))
188* **deps:** bump poolifier ([4763e8c](https://github.com/poolifier/poolifier/commit/4763e8cea8204ed4f1f4da9e14f27e83949a445c))
189* **deps:** bump poolifier ([69b9ebc](https://github.com/poolifier/poolifier/commit/69b9ebc66743cc0fd14d0c13d547d72a8962e54a))
190* **deps:** bump poolifier ([37645d7](https://github.com/poolifier/poolifier/commit/37645d7921f5d48c1731726430ec6b56cff9b472))
191* **deps:** bump poolifier ([c63416f](https://github.com/poolifier/poolifier/commit/c63416f26d0ceb487f2efdc47ec029b069c3c9e1))
192* **deps:** bump poolifier in /examples/typescript/http-client-pool ([d96a9d3](https://github.com/poolifier/poolifier/commit/d96a9d38c802923b762447e2d07b2679932ae687))
193* **deps:** bump poolifier in /examples/typescript/smtp-client-pool ([af1cc0e](https://github.com/poolifier/poolifier/commit/af1cc0e16116ec360615a121cef2c25035e73ce5))
194
bd3c2c04
JB
195## [4.0.18](https://github.com/poolifier/poolifier/compare/v4.0.17...v4.0.18) (2024-07-11)
196
197
198### 🐞 Bug Fixes
199
200* null exception when a task errored ([ac5ee55](https://github.com/poolifier/poolifier/commit/ac5ee55ef0ad7dc29f3d0bc6906e2e127dc2e026))
201
202
203### ✨ Polish
204
205* **priority-queue:** cleanup intermediate variables namespace ([bb5d86b](https://github.com/poolifier/poolifier/commit/bb5d86b228984c83011f07de7b012f1fcd48fe0a))
206
207
208### 🧪 Tests
209
210* improve WorkerNode init coverage ([bcac180](https://github.com/poolifier/poolifier/commit/bcac1803a87e7cbb6fcbebd691a322d796266329))
211
212
213### 📚 Documentation
214
215* fix CHANGELOG.md formatting ([1823a63](https://github.com/poolifier/poolifier/commit/1823a63f7348cbe1a954b8d3a431bb8087cf8b76))
216* flag WorkerChoiceStrategiesContext class as internal ([9eacd2e](https://github.com/poolifier/poolifier/commit/9eacd2e07943c40c0b984de621fc9542f959aed6))
217* publish documentation ([62d0f6f](https://github.com/poolifier/poolifier/commit/62d0f6fe252439cf9a7d71c290a3f1a162aeb829))
218
219
220### 🤖 Automation
221
222* **deps-dev:** bump tatami-ng from 0.4.16 to 0.5.1 ([#2453](https://github.com/poolifier/poolifier/issues/2453)) ([d7b4ed8](https://github.com/poolifier/poolifier/commit/d7b4ed89bb9f65c94af724ec2de0de7f19bbdc64))
223
c2161373
JB
224## [4.0.17](https://github.com/poolifier/poolifier/compare/v4.0.16...v4.0.17) (2024-07-07)
225
c2161373
JB
226### ⚡ Performance
227
1823a63f 228- optimize tasks queuing implementation ([097dea6](https://github.com/poolifier/poolifier/commit/097dea68fd73ac0d6f6db7b13c585bf8b6726418))
c2161373
JB
229
230### ✨ Polish
231
1823a63f
JB
232- factor out fixed queue common code in an abstract class ([840270a](https://github.com/poolifier/poolifier/commit/840270a0f49c9d845f9b2850a36853e1d709f740))
233- format code ([9183b88](https://github.com/poolifier/poolifier/commit/9183b8807bdac35067a22362216d1deadc16421f))
234- move queueing code into its own directory ([c6dd1ae](https://github.com/poolifier/poolifier/commit/c6dd1aeb73ee5d5dd5bbfa9ebd9c4496a60f1252))
235- refine queue full error message ([9008a96](https://github.com/poolifier/poolifier/commit/9008a9668154357ce942ec56caa95dfc3fc08238))
236- remove duplicate code in fixed-queue.ts ([7a1c77f](https://github.com/poolifier/poolifier/commit/7a1c77f62bf4a16d3cd482d479e92e1cd4b1354b))
c2161373
JB
237
238### 📚 Documentation
239
1823a63f 240- generate documentation ([a7ee49b](https://github.com/poolifier/poolifier/commit/a7ee49b03e5a2ee6bd1a1b74a2fe3a2fb7c23404))
c2161373
JB
241
242### 🤖 Automation
243
1823a63f
JB
244- **ci:** fix automated documentation publication at releasing ([147c01e](https://github.com/poolifier/poolifier/commit/147c01eadb3b951b84487c4328f553f95b16fb47))
245- **deps-dev:** bump @cspell/eslint-plugin from 8.10.1 to 8.10.2 ([4f10a83](https://github.com/poolifier/poolifier/commit/4f10a833ef225ac7dbebf9faa16de9c89c8fdf5b))
246- **deps-dev:** bump @types/node ([1d24d0e](https://github.com/poolifier/poolifier/commit/1d24d0e543ebbbb4b3582d29c726cd1621643ca2))
247- **deps-dev:** bump @types/node ([ffa4f4f](https://github.com/poolifier/poolifier/commit/ffa4f4f21af0b1591c10c3e53aa929e94f825e99))
248- **deps-dev:** bump @types/node ([1fe2514](https://github.com/poolifier/poolifier/commit/1fe2514362ede951510d751dac37e7c279a22ec1))
249- **deps-dev:** bump @types/node ([e90a256](https://github.com/poolifier/poolifier/commit/e90a256eb79bc279127cb4021adf58f9fd300ed2))
250- **deps-dev:** bump @types/node ([0bf1a17](https://github.com/poolifier/poolifier/commit/0bf1a17388ea8730fb01dc5cb50a8eccf9e18776))
251- **deps-dev:** bump @types/node ([dd73d0c](https://github.com/poolifier/poolifier/commit/dd73d0c5c9a4e0bf9ba32dc167807356f0b4857d))
252- **deps-dev:** bump @types/node ([2be2259](https://github.com/poolifier/poolifier/commit/2be2259b5dc04eb137210dead6a64dd4cac754b1))
253- **deps-dev:** bump @types/node ([828a2e0](https://github.com/poolifier/poolifier/commit/828a2e030c8777b7fd5a342b693f9e75beb7b9cf))
254- **deps-dev:** bump @types/node ([7109e5b](https://github.com/poolifier/poolifier/commit/7109e5b3b0a6d2e3f3391003be9539eb8fd8bd14))
255- **deps-dev:** bump @types/node ([6f81d57](https://github.com/poolifier/poolifier/commit/6f81d5738358fa5cf67e28402823097c08594eb7))
256- **deps-dev:** bump @types/node ([dc6b47a](https://github.com/poolifier/poolifier/commit/dc6b47a68c6c90b41cedde8e79d0c89709c47d87))
257- **deps-dev:** bump @types/node from 20.14.9 to 20.14.10 ([4c07331](https://github.com/poolifier/poolifier/commit/4c073317e4ad123465ecfdc99491e0291d3fd23d))
258- **deps:** bump poolifier ([9b11cba](https://github.com/poolifier/poolifier/commit/9b11cbaa8455a707c258312a650953eff5de0134))
259- **deps:** bump poolifier ([4c39d13](https://github.com/poolifier/poolifier/commit/4c39d13d36114a267be20a173c60748c6ec5a781))
260- **deps:** bump poolifier ([b0ad3bc](https://github.com/poolifier/poolifier/commit/b0ad3bc6f5ec8e41009b5e81a1fd8f7fe1c4d7a0))
261- **deps:** bump poolifier ([aa6ea2c](https://github.com/poolifier/poolifier/commit/aa6ea2cc4d821059d32337b12c796c2fcfd85a67))
262- **deps:** bump poolifier ([ec4d611](https://github.com/poolifier/poolifier/commit/ec4d611b0e5edab030049780ff9fbbcfc19ad8ee))
263- **deps:** bump poolifier ([cc4e9f0](https://github.com/poolifier/poolifier/commit/cc4e9f0106040f64e56997a51ec5b0004964e789))
264- **deps:** bump poolifier ([6e1b4de](https://github.com/poolifier/poolifier/commit/6e1b4deb9d36d5bf1f50f506683a11766cbe50de))
265- **deps:** bump poolifier ([8e21198](https://github.com/poolifier/poolifier/commit/8e2119854c17a555b3d5eb003afca5ab46bc85bc))
266- **deps:** bump poolifier in /examples/typescript/http-client-pool ([7961830](https://github.com/poolifier/poolifier/commit/796183039d0ad99114f0cff66513ac4165016678))
267- **deps:** bump poolifier in /examples/typescript/smtp-client-pool ([475dc40](https://github.com/poolifier/poolifier/commit/475dc409159cc97c715d2706ba68dd088be4026b))
c2161373 268
3b637906
JB
269## [4.0.16](https://github.com/poolifier/poolifier/compare/v4.0.15...v4.0.16) (2024-07-05)
270
3b637906
JB
271### 📚 Documentation
272
1823a63f
JB
273- generate documentation ([224d008](https://github.com/poolifier/poolifier/commit/224d008191f52fa20b93e1ba67919569f8d6e315))
274- generate documentation ([627fc57](https://github.com/poolifier/poolifier/commit/627fc572465ba2113cbf3df6bd055c3242ecd0fe))
275- refine PR template ([f5e9127](https://github.com/poolifier/poolifier/commit/f5e91274ea67f61521fadf0ccbafc6d00f5d3b87))
276- refine PR template ([e95501c](https://github.com/poolifier/poolifier/commit/e95501c05febf08366d375218728d5778432c1de))
277- refine README.md badges ([7169bda](https://github.com/poolifier/poolifier/commit/7169bda30538a5244b2598a4ef466c5687953ebd))
3b637906
JB
278
279### ✨ Polish
280
1823a63f
JB
281- **ci:** cleanup GH actions ([c5db2d3](https://github.com/poolifier/poolifier/commit/c5db2d3ea50692486410eb1a33e5bb51d6d4181e))
282- code reformatting ([fe6df28](https://github.com/poolifier/poolifier/commit/fe6df2852c1f0964cdffb0698461c9d66b1cf7ed))
283- refine biome.js configuration ([1352ca7](https://github.com/poolifier/poolifier/commit/1352ca70c0b5c6b4ff3813b0c24354b5514b2796))
284- silence linter ([a17b6fe](https://github.com/poolifier/poolifier/commit/a17b6fe6a9b7cde367fa1f1a0a89f6ee5db46ad6))
3b637906
JB
285
286### 🤖 Automation
287
1823a63f
JB
288- **ci:** add autofix GH action ([14b39b9](https://github.com/poolifier/poolifier/commit/14b39b9c09ab382fa25dcb0d52c50b6d05a3affb))
289- **ci:** do not cancel workflow in case of autofix failure ([177dbab](https://github.com/poolifier/poolifier/commit/177dbab8accac6267be8973103757de31f4a4c23))
290- **ci:** fix autofix GH action ([e3a9678](https://github.com/poolifier/poolifier/commit/e3a9678311f735b7c951c5d72f26ef86c7beca9c))
291- **ci:** fix autofix GH action ([0b7cbf7](https://github.com/poolifier/poolifier/commit/0b7cbf73dfdc8346132c002ba9c83fdafe286ee2))
292- **ci:** fix eslint configuration ([c5d7f73](https://github.com/poolifier/poolifier/commit/c5d7f736e1e8c36a2c2d9cbe30e86d1d3ba863a1))
293- **ci:** publish documentation at release ([3a83d94](https://github.com/poolifier/poolifier/commit/3a83d94cd44b504e3b9a3f3b15e9dec4f8c33d49))
294- **ci:** refine autofix GH action ([8b7aa42](https://github.com/poolifier/poolifier/commit/8b7aa4204c27efd1dc699f7baea65b5262bd26b3))
295- **ci:** refine autofix GH action ([8ab143b](https://github.com/poolifier/poolifier/commit/8ab143bb67ef7fb367d771c652cc44df70c9b625))
296- **ci:** switch to release-please release manager ([4c7e68a](https://github.com/poolifier/poolifier/commit/4c7e68aa71533a8ef98296d2f50a2aac898d6b17))
297- **deps-dev:** apply updates ([5c48a85](https://github.com/poolifier/poolifier/commit/5c48a8596b49dec06ec8995df4941ad63cc68f46))
298- **deps-dev:** apply updates ([f94bb23](https://github.com/poolifier/poolifier/commit/f94bb23c8a460415f01bee2a34bf1e56b74236a8))
299- **deps-dev:** apply updates ([1e98512](https://github.com/poolifier/poolifier/commit/1e9851233c950074ccbb5cd525fc0f4075e491d4))
300- **deps-dev:** apply updates ([aaceda9](https://github.com/poolifier/poolifier/commit/aaceda9e4a134d9f8d3db37e349a18e7b2b1c303))
301- **deps-dev:** apply updates ([3dcc95e](https://github.com/poolifier/poolifier/commit/3dcc95e54a6bfeb4b27460d60d3c90d27ac352dd))
302- **deps-dev:** apply updates ([0aa0016](https://github.com/poolifier/poolifier/commit/0aa00166eaa9a8c9b505b4fa7fd5dc50d831b7ef))
303- **deps-dev:** apply updates ([dea4237](https://github.com/poolifier/poolifier/commit/dea42379cfdbcf1c1c9800df7c097eab484ebc07))
304- **deps-dev:** apply updates ([e06ce0e](https://github.com/poolifier/poolifier/commit/e06ce0ec82c8c076d6136f85f12101181d922612))
305- **deps-dev:** apply updates ([80605a6](https://github.com/poolifier/poolifier/commit/80605a6c89c41c5b71e83385f615f85483987ea1))
306- **deps-dev:** apply updates ([3b594fe](https://github.com/poolifier/poolifier/commit/3b594fe1b0f89d6665da2eb2ebdc14eb7628fe70))
307- **deps-dev:** apply updates ([df01d9a](https://github.com/poolifier/poolifier/commit/df01d9a8a7053a4ff33e704cd5493f0a7bc4e2e7))
308- **deps-dev:** apply updates ([a1b4a65](https://github.com/poolifier/poolifier/commit/a1b4a65143c0253b57fee18affd88a554122e955))
309- **deps-dev:** apply updates ([31a42de](https://github.com/poolifier/poolifier/commit/31a42de7d691911759e12a673e5a2153f5558ed8))
310- **deps-dev:** bump @cspell/eslint-plugin from 8.9.0 to 8.9.1 ([0b4d6a4](https://github.com/poolifier/poolifier/commit/0b4d6a4b0255f0172da50a9ba3989d21725027a5))
311- **deps-dev:** bump eslint-plugin-jsdoc from 48.2.13 to 48.4.0 ([195a874](https://github.com/poolifier/poolifier/commit/195a874e9537a715e04b54e44c9a4eef04b1fefa))
312- **deps-dev:** bump mocha from 10.4.0 to 10.5.0 ([b1b2093](https://github.com/poolifier/poolifier/commit/b1b20933105fb3c21f3d3825dc18a87501ad8275))
313- **deps-dev:** bump mocha from 10.5.1 to 10.5.2 ([a4d1195](https://github.com/poolifier/poolifier/commit/a4d1195cd5b6d60f0d4424b32c638d304023e15e))
314- **deps-dev:** bump neostandard from 0.7.2 to 0.8.0 ([7344812](https://github.com/poolifier/poolifier/commit/7344812ff30f82f3b7b88383eca5564c398d2de0))
315- **deps-dev:** bump typedoc from 0.26.0 to 0.26.2 ([8004ea7](https://github.com/poolifier/poolifier/commit/8004ea76f77c3dee098569b37bc9dec9e82f8fe3))
316- **deps-dev:** bump typescript ([fca1e52](https://github.com/poolifier/poolifier/commit/fca1e522f2df0e93e302e6278dc4725b2e28f561))
317- **deps-dev:** bump typescript ([345d416](https://github.com/poolifier/poolifier/commit/345d416980bd3204398e730ca259d1755dcd0f64))
318- **deps-dev:** bump typescript ([3aa8d66](https://github.com/poolifier/poolifier/commit/3aa8d6646706dd32bbd96795330f0a5365d52efa))
319- **deps-dev:** bump typescript ([8837306](https://github.com/poolifier/poolifier/commit/8837306853d6b01efaf67bf69f129fc9ca47b071))
320- **deps-dev:** bump typescript ([0b79799](https://github.com/poolifier/poolifier/commit/0b797997c9340aac75c7be6e5559b08076c387e7))
321- **deps-dev:** bump typescript ([995d429](https://github.com/poolifier/poolifier/commit/995d429cce313177943d54e9c1f3e02a1cdc8c31))
322- **deps-dev:** bump typescript ([2905914](https://github.com/poolifier/poolifier/commit/2905914e6e410cff2a1f8a75c8184abf701d7a16))
323- **deps-dev:** bump typescript ([f2c2f1b](https://github.com/poolifier/poolifier/commit/f2c2f1b196b0cac64235304b5df4b24a97d09ffb))
324- **deps-dev:** bump typescript ([37b0774](https://github.com/poolifier/poolifier/commit/37b07742956c3d25debda0048a60afd3659b547f))
325- **deps-dev:** bump typescript ([f4a2509](https://github.com/poolifier/poolifier/commit/f4a2509b88456b0f6d16c8348c1e07470a94415f))
326- **deps-dev:** bump typescript ([97bb99a](https://github.com/poolifier/poolifier/commit/97bb99ac1e28c87f59b75ea23a9c6643a8fba9c4))
327- **deps:** bump poolifier ([5d5410e](https://github.com/poolifier/poolifier/commit/5d5410ec4203bc1ffa0a81fa52de85971916fed8))
328- **deps:** bump poolifier ([177e46b](https://github.com/poolifier/poolifier/commit/177e46bb9cab33ad65c64b3dd5fd524bb0ac1eef))
329- **deps:** bump poolifier ([580433b](https://github.com/poolifier/poolifier/commit/580433bc22585b6565a3404466a13e5babfd23fa))
330- **deps:** bump poolifier ([a0583d4](https://github.com/poolifier/poolifier/commit/a0583d40e971f43f47b79fd049e99c069db8cac1))
331- **deps:** bump poolifier ([161136f](https://github.com/poolifier/poolifier/commit/161136fe626ea7de93956b2e1e6228ffd6eba209))
332- **deps:** bump poolifier ([70075ce](https://github.com/poolifier/poolifier/commit/70075ce9218f5a5a07c0decf0068775ae351c356))
333- **deps:** bump poolifier ([d74c068](https://github.com/poolifier/poolifier/commit/d74c0684cb549b12897e79e31508b3cad5152456))
334- **deps:** bump poolifier ([b8e4e7d](https://github.com/poolifier/poolifier/commit/b8e4e7dec768e992ba38e29dee0a0194eeb4fd50))
335- **deps:** bump poolifier ([239d223](https://github.com/poolifier/poolifier/commit/239d22372bddd21106b22361038be2f3aae6e5de))
336- **deps:** bump poolifier in /examples/typescript/http-client-pool ([1e6c12d](https://github.com/poolifier/poolifier/commit/1e6c12d988c87fdf1f95a2ffece8c1c76e49bcf3))
337- **deps:** bump poolifier in /examples/typescript/smtp-client-pool ([4c29535](https://github.com/poolifier/poolifier/commit/4c29535a8e8669608907f0db799efa1c94f17421))
338- **deps:** bump ws ([5ae7d26](https://github.com/poolifier/poolifier/commit/5ae7d26a61d9a13e49ccde6117c02d26f49d841d))
339- **deps:** bump ws ([5fea98e](https://github.com/poolifier/poolifier/commit/5fea98eac18f518cb3c76dfed5e514e1aa27ecee))
340- **deps:** bump ws ([cf6f83d](https://github.com/poolifier/poolifier/commit/cf6f83dd588e71b440f1454dd592c1e8029ada6d))
3b637906 341
e8701e36
JB
342## [4.0.15] - 2024-06-20
343
017f9985
JB
344### Fixed
345
346- Fix priority queue dequeue() from the last prioritized bucket.
347
13b6dfca
JB
348## [4.0.14] - 2024-06-12
349
1b82b7cd
JB
350### Changed
351
262e9314 352- Add mapExecute() helper to execute a task function on an iterable data's input.
1b82b7cd 353
b3b1857b
JB
354## [4.0.13] - 2024-05-29
355
fcfc3353
JB
356### Changed
357
358- Optimize tasks queue implementation.
359- Enable prioritized tasks queueing only when necessary.
360
8e41ea40
JB
361## [4.0.12] - 2024-05-25
362
cccbe18a
JB
363### Changed
364
365- Optimize circular buffer implementation to store task execution measurements.
366
b537ee9c
JB
367## [4.0.11] - 2024-05-21
368
05a852b8
JB
369### Changed
370
686b339e 371- Switch to optimized circular buffer implementation to store task execution measurements.
05a852b8 372
40d04d55
JB
373## [4.0.10] - 2024-05-20
374
152e87a8
JB
375### Fixed
376
377- Ensure tasks stealing dynamic worker node is not destroyed on inactivity.
378
ea2c5b8b
JB
379## [4.0.9] - 2024-05-19
380
b947a3c0
JB
381### Changed
382
383- Add ELU `utilization` statistics to pool information.
384
a19a4833
JB
385## [4.0.8] - 2024-05-15
386
91041638
JB
387### Fixed
388
389- Fix default task function worker choice strategy and priority handling.
390
71ccb3ae
JB
391## [4.0.7] - 2024-05-13
392
533a8e22
JB
393### Changed
394
395- Add ELU statistics to pool information.
396
f829e037
JB
397## [4.0.6] - 2024-05-10
398
8a7b12f1
JB
399### Fixed
400
401- Fix pools' `addTaskFunction()` type definition.
402
7cdb9e56
JB
403## [4.0.5] - 2024-05-09
404
3e645903
JB
405### Fixed
406
407- Avoid queued tasks redistribution on the errored worker node.
408
97c12ef2
JB
409## [4.0.4] - 2024-05-08
410
2eee7220
JB
411### Fixed
412
413- Disable `tasksStealingOnBackPressure` by default until performance issues under heavy load are sorted out.
414
04f996c1
JB
415## [4.0.3] - 2024-05-08
416
0d4e88b3
JB
417### Changed
418
419- Optimize task(s) stealing by dequeuing task(s) from the last prioritized bucket.
420
0de45de9
JB
421## [4.0.2] - 2024-05-06
422
9a55fa8c
JB
423### Fixed
424
425- Ensure poolifier worker task performance measurement requirements are synchronized with task function objects' worker choice strategies.
426
840d1755
JB
427## [4.0.1] - 2024-05-02
428
e0843544
JB
429### Fixed
430
431- Ensure dynamic worker node are initialized with sensible worker node usage default values to avoid worker choice strategies biased decisions.
432- 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.
433
f18b1430
JB
434## [4.0.0] - 2024-04-30
435
f7a08a34
JB
436### Changed
437
3e3e2e5d
JB
438- 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 }`.
439- Add priority queue based tasks queueing. One priority queue is divided into prioritized buckets to avoid queued tasks starvation under load.
f7a08a34 440- BREAKING CHANGE: `listTaskFunctionNames()` to `listTaskFunctionsProperties()` in pool and worker API returning registered task functions properties.
3e3e2e5d
JB
441- BREAKING CHANGE: `strategy` field in pool information renamed to `defaultStrategy`.
442
443### Fixed
444
445- Ensure worker choice strategy options changes at runtime are propagated to poolifier workers.
f7a08a34 446
48eab590
JB
447## [3.1.30] - 2024-04-22
448
3e3e2e5d 449### Fixed
22bcc4f1
JB
450
451- Fix `transferList` argument type definition.
452
a2568a26
JB
453## [3.1.29] - 2024-04-02
454
3d720596
JB
455### Fixed
456
457- Fix possible race condition at worker node recreation on worker `error` and `exit` events.
458
d1fc382e
JB
459## [3.1.28] - 2024-04-01
460
60dc0a9c
JB
461### Fixed
462
463- Ensure the minimum number of workers on a started pool is guaranteed.
464
cf4c4b77
JB
465## [3.1.27] - 2024-03-27
466
1fee4f60
JB
467### Fixed
468
469- Fix publishing on JSR, take 4.
470
ac1f550f
JB
471## [3.1.26] - 2024-03-27
472
4ba59505
JB
473### Fixed
474
475- Fix publishing on JSR, take 3.
476
3b58238c
JB
477## [3.1.25] - 2024-03-27
478
41328ae5
JB
479### Fixed
480
481- Fix publishing on JSR, take 2.
482
8fddc9ad
JB
483## [3.1.24] - 2024-03-27
484
fcc6278e
JB
485### Fixed
486
487- Fix publishing on JSR.
488
7586f5a8
JB
489## [3.1.23] - 2024-03-27
490
b7bb8586
JB
491### Changed
492
493- Publish on JSR.
494
01f4a5ce
JB
495## [3.1.22] - 2024-03-15
496
d67bed32
JB
497### Fixed
498
499- Fix pool event emitter registered callbacks removal at `destroy()`.
500
6fd820e6
JB
501## [3.1.21] - 2024-02-22
502
369179f6
JB
503### Fixed
504
505- Fix null exception regression: [#1496](https://github.com/poolifier/poolifier/issues/1496).
506
c96e6364
JB
507## [3.1.20] - 2024-02-11
508
d20cde84
JB
509### Fixed
510
511- Ensure `worker_threads` workers are unreferenced at termination.
512
a7358578
JB
513## [3.1.19] - 2024-01-16
514
16d7e943
JB
515### Fixed
516
517- Fix possible null exception at task finishing handling.
518
57bf289f
JB
519### Changed
520
521- Optimize Deque implementation to improve tasks queueing performance.
522
7cf320c9
JB
523## [3.1.18] - 2024-01-06
524
6d7beb8c
JB
525### Fixed
526
527- Fix dynamic pool with minimum number of workers set to zero: [#1748](https://github.com/poolifier/poolifier/issues/1748).
528
a4bc8d0e
JB
529## [3.1.17] - 2024-01-05
530
2b6b412f
JB
531### Changed
532
533- Improve performance by clean up unneeded condition checks on hot code paths.
534
0d64fd53
JB
535## [3.1.16] - 2024-01-03
536
4302d959
JB
537### Fixed
538
539- Add missing type to TS type definitions.
540
9122cc2c
JB
541## [3.1.15] - 2024-01-02
542
a4d25410
JB
543### Fixed
544
545- Fix CommonJS support with TypeScript: [#1821](https://github.com/poolifier/poolifier/issues/1821).
546
565b7e65
JB
547## [3.1.15-0] - 2024-01-02
548
63406ebd
JB
549### Fixed
550
a4d25410 551- Fix CommonJS support with TypeScript: [#1821](https://github.com/poolifier/poolifier/issues/1821).
63406ebd 552
56412ef4
JB
553## [3.1.14] - 2024-01-01
554
e44639e9
JB
555### Fixed
556
557- Properly handle dynamic pool with zero minimum size.
558
5e133e82
JB
559## [3.1.13] - 2023-12-30
560
b20bf19a
JB
561### Changed
562
563- Reduce branching in several hot code paths.
564- Use faster object cloning implementation.
565
60aa9f2f
JB
566## [3.1.12] - 2023-12-27
567
28883f84
JB
568### Fixed
569
570- Fix tasks redistribution triggers at pool destroying.
571
572### Changed
573
574- Switch TypeScript module resolution to Node16.
575
164c80dd
JB
576## [3.1.12-0] - 2023-12-27
577
f4ef37a8
JB
578### Fixed
579
580- Fix tasks redistribution triggers at pool destroying.
581
0766991a
JB
582## [3.1.11] - 2023-12-24
583
5eb72b9e
JB
584### Fixed
585
586- Avoid worker node cross tasks stealing.
587- Ensure only half the pool worker nodes can steal tasks.
588
4618ccfd
JB
589## [3.1.10] - 2023-12-23
590
09616edb
JB
591### Changed
592
593- Avoid useless branching on pool type.
594
bba20209
JB
595## [3.1.9] - 2023-12-22
596
2889bd70
JB
597### Changed
598
599- Readd ThreadPoolOptions and ClusterPoolOptions TS type aliases to PoolOptions.
600
b1bbc365
JB
601## [3.1.8] - 2023-12-21
602
ad3836ed
JB
603### Fixed
604
605- Fix default worker weight computation.
606- Fix possible null exception at pool destroying.
607
72523ab9
JB
608## [3.1.7] - 2023-12-20
609
55d7d600
JB
610### Fixed
611
612- Ensure worker choice strategies implementation wait for worker node readiness: [#1748](https://github.com/poolifier/poolifier/issues/1748).
613
165f3d56
JB
614## [3.1.6] - 2023-12-18
615
85b2561d
JB
616### Fixed
617
618- Fix pool destroying with tasks queuing enabled.
619
6c8cec9e
JB
620## [3.1.5] - 2023-12-18
621
32b141fd
JB
622### Added
623
624- Add queued tasks end timeout support to worker node termination.
625
f11ec29c
JB
626## [3.1.4] - 2023-12-18
627
4e0afe97
JB
628### Fixed
629
630- Make more robust the fix for possible null exception at handling task execution response.
631
f592ef16
JB
632## [3.1.3] - 2023-12-17
633
9b358e72
JB
634### Fixed
635
636- Fix possible null exception at handling task execution response.
637
c61772e5
JB
638## [3.1.2] - 2023-12-17
639
87347ea8
JB
640### Fixed
641
32b141fd 642- Wait for queued tasks to end at worker node termination.
87347ea8 643
6e664bec
JB
644## [3.1.1] - 2023-12-16
645
51280f9b
JB
646### Fixed
647
648- Fix pool options TS type definition.
649
5362c66b
JB
650## [3.1.0] - 2023-12-16
651
c3719753
JB
652### Changed
653
654- TypeScript breaking change: merge ThreadPoolOptions and ClusterPoolOptions types into PoolOptions type.
655
42321a2b
JB
656## [3.0.14] - 2023-12-13
657
fa548cda
JB
658### Fixed
659
660- Fix possible null exception with worker_threads pools.
661
d727d871
JB
662## [3.0.13] - 2023-12-12
663
fb5a7307
JB
664### Fixed
665
666- Ensure worker choice strategy wait for worker nodes readiness.
667
668### Changed
669
670- Remove infinite retries support in worker choice strategy to avoid configuration leading to possible infinite recursion or loop.
671
90a43710
JB
672## [3.0.12] - 2023-12-12
673
9aa78bcb
JB
674### Changed
675
676- Add infinite retries support in worker choice strategy.
45a5a54c 677
d8163b08
JB
678## [3.0.11] - 2023-12-11
679
f18fd12b
JB
680### Fixed
681
457dd3dc 682- Ensure pool asynchronous resource properly track tasks execution.
f18fd12b 683
bd453998
JB
684## [3.0.10] - 2023-12-08
685
cb71d660
JB
686### Changed
687
457dd3dc 688- Add a fastpath when tasks stealing or redistribution is impossible.
cb71d660 689
d7164344
JB
690## [3.0.9] - 2023-11-26
691
78f60f82
JB
692### Fixed
693
694- Remove all pool events listener at pool destroying.
695- Remove all worker node events listener at worker node destroying.
9f99eb9b 696- Fix worker node event emitter listeners handling memory leak at pool options runtime change.
78f60f82 697
0c08a681
JB
698## [3.0.8] - 2023-11-25
699
463226a4
JB
700### Fixed
701
457dd3dc 702- Ensure continuous tasks stealing on idle start at worker node idling.
463226a4 703
14dad1fd
JB
704## [3.0.7] - 2023-11-24
705
65542a35
JB
706### Changed
707
708- Make continuous tasks stealing start at worker node idling.
709
82c5db63
JB
710## [3.0.6] - 2023-11-24
711
711623b8
JB
712### Fixed
713
b51d8596 714- Ensure pool statuses are checked at initialization, `start()` or `destroy()`.
55082af9 715- Ensure pool `ready` event can be emitted after several `start()/destroy()` cycles.
711623b8 716
5aa31a74
JB
717## [3.0.5] - 2023-10-27
718
d91689fd
JB
719### Fixed
720
55082af9 721- Ensure pool `ready` event can be emitted only once.
d91689fd 722
597775b2
JB
723## [3.0.4] - 2023-10-20
724
03fb313b
JB
725### Changed
726
49d60f11 727- Switch to Bencher for benchmarking: [https://bencher.dev/perf/poolifier](https://bencher.dev/perf/poolifier).
03fb313b
JB
728- Use builtin retry mechanism in worker choice strategies instead of custom one.
729
6c285176
JB
730## [3.0.3] - 2023-10-19
731
9761e404
JB
732### Fixed
733
734- Avoid null exception at sending message to worker.
535fd8d5 735- Avoid null exception at checking worker node readiness.
9761e404 736
358dc40f
JB
737## [3.0.2] - 2023-10-17
738
97256a85
JB
739### Fixed
740
c3c2b35e 741- Fix race condition at dynamic worker node task assignment and scheduled removal. See issue [#1468](https://github.com/poolifier/poolifier/issues/1468) and [#1496](https://github.com/poolifier/poolifier/issues/1496).
97256a85 742
7a570743
JB
743## [3.0.1] - 2023-10-16
744
dbfa7948
JB
745### Fixed
746
fc84edac 747- Workaround possible race condition at work nodes array element removal and querying. See issue [#1468](https://github.com/poolifier/poolifier/issues/1468).
dbfa7948 748
365f13e4
JB
749### Changed
750
c3c2b35e 751- Switch the worker node eventing code to `EventTarget` API.
365f13e4 752
003b3275
JB
753## [3.0.0] - 2023-10-08
754
277c49bf
JB
755### Changed
756
757- Remove Node.js 16.x.x (EOL) support.
758
3c9e911a
JB
759## [2.7.5] - 2023-10-03
760
f80125ca
JB
761### Changed
762
763- Use `EventEmitterAsyncResource` type from `@types/node` for pool event emitter. TypeScript users will need to update to latest `@types/node` version.
764
3466e757
JB
765## [2.7.4] - 2023-09-25
766
67b26ae2
JB
767### Fixed
768
769- Fix source maps (bundler issue).
770
eeb1f961
JB
771## [2.7.3] - 2023-09-24
772
b5604034
JB
773### Changed
774
775- Convert pool event emitter to event emitter async resource.
776
f2df6dc8
JB
777## [2.7.2] - 2023-09-23
778
116ca64b
JB
779### Changed
780
781- Add source maps to npm package to ease debugging.
782
1e319a70
JB
783### Added
784
785- Continuous benchmarking versus other worker pools: [https://poolifier.github.io/benchmark](https://poolifier.github.io/benchmark).
786
aab2819b
JB
787## [2.7.1] - 2023-09-20
788
ae036c3e
JB
789### Fixed
790
791- Ensure worker message listener used one time are removed after usage.
792
15d7c489
JB
793## [2.7.0] - 2023-09-19
794
160557ff
JB
795### Fixed
796
797- Fix task stealing related tasks queue options handling at runtime.
798
c3284191
JB
799### Changed
800
801- Rename `listTaskFunctions()` to `listTaskFunctionNames()` in pool and worker API.
802
803### Added
804
35808931 805- Add `hasTaskFunction()`, `addTaskFunction()`, `removeTaskFunction()`, `setDefaultTaskFunction()` methods to pool API: [PR #1148](https://github.com/poolifier/poolifier/pull/1148).
c20084b6 806- Stricter worker constructor arguments validation.
c3284191 807
04054352
JB
808## [2.6.45] - 2023-09-17
809
093af25b
JB
810### Changed
811
812- Disable publication on GitHub packages registry on release until authentication issue is fixed.
09d9af02
JB
813
814### Added
815
ce0ab2d7 816- Add `startWorkers` to pool options to whether start the minimum number of workers at pool initialization or not.
cde5b54e 817- Add `start()` method to pool API to start the minimum number of workers.
2eee7220 818- 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.
1e319a70 819- Continuous internal benchmarking: [https://poolifier.github.io/benchmark-results/dev/bench](https://poolifier.github.io/benchmark-results/dev/bench).
f1c674cd 820
bce9ffdf
JB
821## [2.6.44] - 2023-09-08
822
4cb259d3
JB
823### Fixed
824
825- Use a dedicated PAT to publish on GitHub packages registry.
826
827### Added
828
829- Publish on GitHub packages registry on release.
830
831### Changed
832
833- Switch from rome to biome: [PR #1128](https://github.com/poolifier/poolifier/pull/1128).
834
fbda1e26
JB
835## [2.6.43] - 2023-09-08
836
15fc82ba
JB
837### Added
838
4cb259d3 839- Publish on GitHub packages registry on release.
15fc82ba
JB
840
841### Changed
842
4cb259d3 843- Switch from rome to biome: [PR #1128](https://github.com/poolifier/poolifier/pull/1128).
15fc82ba 844
b47306a3
JB
845## [2.6.42] - 2023-09-06
846
ad11ca81
JB
847### Changed
848
849- Optimize hot code paths implementation: avoid unnecessary branching, add and use optimized helpers (min, max), use reduce() array helper, ...
850
1b37751d
JB
851## [2.6.41] - 2023-09-03
852
f3a91bac
JB
853### Changed
854
855- Optimize worker choice strategies implementation.
856
7790a494
JB
857## [2.6.40] - 2023-09-01
858
6fe200b4
JB
859### Fixed
860
861- Do not pre-choose in WRR worker choice strategy to avoid bias.
68738842 862- Avoid array out of bound in worker choice strategies after worker node removal.
6fe200b4 863
766c7f84
JB
864## [2.6.39] - 2023-08-30
865
edf8ce4e
JB
866### Fixed
867
4cb259d3 868- Fix race condition in worker choice strategies at worker node info querying while not yet initialized.
edf8ce4e 869
904a5689
JB
870## [2.6.38] - 2023-08-30
871
b40c4b06
JB
872### Added
873
874- Bundle typescript types declaration into one file.
875
619f403b
JB
876### Changed
877
878- Improve interleaved weighted round robin worker choice strategy implementation.
879
5a24d71c
JB
880## [2.6.37] - 2023-08-28
881
bdb9d712
JB
882### Fixed
883
884- Ensure unused worker usage statistics are deleted at runtime.
885
8c0b113f
JB
886### Changed
887
888- Rename worker choice strategy options `choiceRetries` to `retries`.
574c5c8d 889- Avoid unnecessary branching in worker choice strategies.
8c0b113f 890
ba821940
JB
891## [2.6.36] - 2023-08-27
892
9d2d0da1
JB
893### Fixed
894
895- Fix pool `execute()` arguments check.
896
1f0766e7
JB
897### Changed
898
899- Make continuous tasks stealing algorithm less aggressive.
8780236f 900- Fine tune tasks stealing algorithm under back pressure.
1f0766e7 901
ffd2c1ff
JB
902## [2.6.35] - 2023-08-25
903
dc021bcc
JB
904### Fixed
905
906- Don't account worker usage statistics for tasks that have failed.
3baa0837 907- Fix pool information runtime and wait time median computation.
dc021bcc
JB
908
909### Changed
910
911- Update simple moving average implementation to use a circular buffer.
912- Update simple moving median implementation to use a circular buffer.
68cbdc84
JB
913- Account for stolen tasks in worker usage statistics and pool information.
914
915### Added
916
917- Continuous tasks stealing algorithm.
dc021bcc 918
c58bc2a1
JB
919## [2.6.34] - 2023-08-24
920
0bc68267
JB
921### Fixes
922
923- Avoid cascading tasks stealing under back pressure.
924
925### Changed
926
927- Add fastpath to queued tasks rescheduling.
928
39fb7ad0
JB
929## [2.6.33] - 2023-08-24
930
dd951876
JB
931### Fixed
932
933- Fix queued tasks rescheduling.
934
ff3f866a
JB
935### Changed
936
937- Rename tasks queue options `queueMaxSize` to `size`.
938
a6b3272b 939### Added
dd951876 940
a6b3272b 941- Task stealing scheduling algorithm if tasks queueing is enabled.
dd951876 942
c55c9b5d
JB
943## [2.6.32] - 2023-08-23
944
15b176e0
JB
945### Fixed
946
947- Ensure no task can be executed when the pool is destroyed.
948
20c6f652
JB
949### Added
950
951- Add `queueMaxSize` option to tasks queue options.
574b351d 952- Add O(1) deque implementation implemented with doubly linked list and use it for tasks queueing.
72695f86 953- Add tasks stealing algorithm when a worker node queue is back pressured if tasks queueing is enabled.
20c6f652 954
e560a9f2
JB
955## [2.6.31] - 2023-08-20
956
b1aae695
JB
957### Fixed
958
3e8611a8 959- Fix worker choice strategy retries mechanism in some edge cases.
b1aae695 960
94407def
JB
961### Changed
962
e695d66f 963- Make orthogonal worker choice strategies tasks distribution and created dynamic worker usage.
a71b05bc 964- Remove the experimental status of the `LEAST_ELU` worker choice strategy.
94407def 965
962b9863
JB
966## [2.6.30] - 2023-08-19
967
33e6bb4c
JB
968### Fixed
969
970- Ensure pool event `backPressure` is emitted.
971- Ensure pool event `full` is emitted only once.
8735b4e5 972- Ensure worker node cannot be instantiated without proper arguments.
33e6bb4c 973
8cc4ea81
JB
974## [2.6.29] - 2023-08-18
975
6169563b
JB
976### Fixed
977
55082af9 978- Fix race condition between readiness and task functions worker message handling at startup.
5dd4043c 979- Fix duplicate task function worker usage statistics computation per task function.
db0e38ee 980- Update task function worker usage statistics if and only if there's at least two different task functions.
5bb5be17 981- Fix race condition at task function worker usage executing task computation leading to negative value.
6169563b 982
8990357d
JB
983### Added
984
445264e8 985- 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).
8990357d
JB
986- Use back pressure detection in worker choice strategies.
987- Add worker choice strategies retries mechanism if no worker is eligible.
988
21157987
JB
989## [2.6.28] - 2023-08-16
990
f05ed93c
JB
991### Fixed
992
993- Ensure pool workers are properly initialized.
994
12d67776
JB
995### Added
996
997- HTTP server pool examples: express-cluster, express-hybrid.
998
d18fccb1
JB
999### Changed
1000
1001- Remove now useless branching in worker hot code path.
1002
741cdb34
JB
1003## [2.6.27] - 2023-08-15
1004
50e7f498
JB
1005### Fixed
1006
1007- Add `KillHandler` type definition to exported types.
1008
ef3891a3
JB
1009### Added
1010
1011- Add `destroy` event to pool API.
1012
e9dc6efa
JB
1013## [2.6.26] - 2023-08-15
1014
2b099bf7
JB
1015### Added
1016
1017- Add kill handler to worker options allowing to execute custom code when worker is killed.
ef3891a3 1018- Add `listTaskFunctions()` method to pool API.
1f4553c6 1019- SMTP client pool example: nodemailer.
2b099bf7 1020
5b726f72
JB
1021## [2.6.25] - 2023-08-13
1022
72855e92
JB
1023### Added
1024
3b311539 1025- HTTP server pool examples: fastify-cluster, fastify-hybrid.
02999424 1026- WebSocket server pool examples: ws-cluster, ws-hybrid.
72855e92 1027
7aadd6e5
JB
1028## [2.6.24] - 2023-08-12
1029
7d91a8cd
JB
1030### Added
1031
1032- Add array of transferable objects to the `execute()` method arguments.
02999424 1033- WebSocket server pool examples: ws-worker_threads.
7d91a8cd 1034
6b4263b4
JB
1035## [2.6.23] - 2023-08-11
1036
3d76750a 1037### Fixed
8e0af894 1038
3d76750a 1039- Fix pool busyness semantic when tasks queueing is enabled: the pool is busy when the number of executing tasks on each worker has reached the maximum tasks concurrency per worker.
9606b474 1040
3d76750a
JB
1041### Added
1042
1043- HTTP client pool examples: fetch, node-fetch and axios with multiple task functions.
02999424 1044- HTTP server pool examples: express-worker_threads, fastify-worker_threads.
3d76750a
JB
1045
1046## [2.6.22] - 2023-08-10
9606b474 1047
3d76750a 1048### Fixed
9606b474
JB
1049
1050- Add missing `types` field to package.json `exports`.
1051
3d76750a
JB
1052### Changed
1053
1054- Structure markdown documentation (PR #811).
1055
d9647bdd
JB
1056## [2.6.21] - 2023-08-03
1057
2111ec12
JB
1058### Changed
1059
1060- Improve code documentation.
1061- Code refactoring and cleanup for better maintainability and readability.
1062
5c30b9d9
JB
1063## [2.6.20] - 2023-07-21
1064
10ecf8fd
JB
1065### Fixed
1066
1067- Fix queued tasks redistribution on error task execution starvation.
a1763c54 1068- Ensure tasks queueing per worker condition is untangled from the pool busyness semantic.
10ecf8fd 1069
aa9eede8
JB
1070### Changed
1071
7c89e6a4 1072- Drastically reduce lookups by worker in the worker nodes.
aa9eede8 1073
62485908
JB
1074## [2.6.19] - 2023-07-20
1075
2e2ef9c3
JB
1076### Added
1077
1078- Dedicated internal communication channel for worker_threads pools.
1079
8f4c9491
JB
1080## [2.6.18] - 2023-07-19
1081
8660b972
JB
1082### Changed
1083
1084- Code refactoring and cleanup for better maintainability and readability. Bundle size is a bit smaller.
1085
206a3519
JB
1086## [2.6.17] - 2023-07-16
1087
b4899fae
JB
1088### Added
1089
1a3e01ba 1090- Add `listTaskFunctions()` method to worker API.
b4899fae 1091
58a06a6c
JB
1092## [2.6.16] - 2023-07-12
1093
2a69b8c5
JB
1094### Fixed
1095
80520ca4 1096- Fix pool startup detection.
2a69b8c5
JB
1097- Fix worker task functions handling.
1098
b5900b02
JB
1099## [2.6.15] - 2023-07-11
1100
19dbc45b
JB
1101### Added
1102
1103- Take into account worker node readiness in worker choice strategies.
1104
4a0db581
JB
1105## [2.6.14] - 2023-07-10
1106
87e44747
JB
1107### Fixed
1108
1109- Fix task function statistics tracking.
1110
0265272f
JB
1111## [2.6.13] - 2023-07-10
1112
968a2e8c
JB
1113### Added
1114
1115- Add per task function statistics tracking.
782299f8 1116- Add public methods to manipulate the worker task functions at runtime.
968a2e8c 1117
44c8c00f
JB
1118## [2.6.12] - 2023-07-09
1119
aa4bf4b2
JB
1120### Fixed
1121
1122- Workaround import issue with `node:os` module in node 16.x.x.
1123
b7cfced1
JB
1124## [2.6.11] - 2023-07-09
1125
d5024c00
JB
1126### Fixed
1127
1128- Fix pool readiness semantic.
1129
f313a208
JB
1130## [2.6.10] - 2023-07-08
1131
2431bdb4
JB
1132### Fixed
1133
1134- Ensure workers are not recreated on error at pool startup.
1135
1136### Added
1137
1138- Add `ready` and `strategy` fields to pool information.
1139- Add pool event `ready` to notify when the number of workers created in the pool has reached the maximum size expected and are ready.
caadbd41 1140- Add dynamic pool sizing checks.
2431bdb4 1141
369d0a51
JB
1142## [2.6.9] - 2023-07-07
1143
2845f2a5
JB
1144### Fixed
1145
1146- Recreate the right worker type on uncaught exception.
1147
1148### Added
1149
1150- Add minimum and maximum to internal measurement statistics.
1dcf8b7b 1151- Add `runTime` and `waitTime` to pool information.
75d3401a 1152- Check worker inactive time only on dynamic worker.
2845f2a5 1153
fc97d613
JB
1154## [2.6.8] - 2023-07-03
1155
92b1feaa
JB
1156### Fixed
1157
1158- Brown paper bag release to fix version handling in pool information.
1159
52d54060
JB
1160## [2.6.7] - 2023-07-03
1161
5bc91f3e
JB
1162### Fixed
1163
1164- Ensure worker queued tasks at error are reassigned to other pool workers.
1165
afe0d5bf
JB
1166### Added
1167
1168- Add pool `utilization` ratio to pool information.
23ccf9d7 1169- Add `version` to pool information.
e5b3047d 1170- Add worker information to worker nodes.
afe0d5bf 1171
f42c583f
JB
1172## [2.6.6] - 2023-07-01
1173
6961ca9a
JB
1174### Added
1175
d5e3c4ff 1176- Add safe helper `availableParallelism()` to help sizing the pool.
6961ca9a 1177
3749facb
JB
1178### Fixed
1179
1180- Ensure message handler is only registered in worker.
1181
6fed2513
JB
1182## [2.6.5] - 2023-06-27
1183
c72f6987
JB
1184### Known issues
1185
70726c28 1186- Cluster pools tasks execution are not working by using ESM files extension: https://github.com/poolifier/poolifier/issues/782
c72f6987
JB
1187
1188### Fixed
1189
1190- Artificial version bump to 2.6.5 to workaround publication issue.
d5e3c4ff 1191- Ensure cluster pool `destroy()` gracefully shutdowns worker's server.
c72f6987
JB
1192- Ensure pool event is emitted before task error promise rejection.
1193- Fix queued tasks count computation.
1194
1195### Removed
1196
2fbe1783 1197- Remove unneeded worker_threads worker `MessageChannel` internal usage for IPC.
c72f6987 1198
6426631b
JB
1199## [2.6.4] - 2023-06-27
1200
941f9a7c
JB
1201### Known issues
1202
70726c28 1203- Cluster pools tasks execution are not working by using ESM files extension: https://github.com/poolifier/poolifier/issues/782
941f9a7c 1204
2c039e43
JB
1205### Fixed
1206
d5e3c4ff 1207- Ensure cluster pool `destroy()` gracefully shutdowns worker's server.
2c039e43 1208- Ensure pool event is emitted before task error promise rejection.
9c16fb4b 1209- Fix queued tasks count computation.
2c039e43 1210
941f9a7c
JB
1211### Removed
1212
2fbe1783 1213- Remove unneeded worker_threads worker `MessageChannel` internal usage for IPC.
941f9a7c 1214
bc1b0765
JB
1215## [2.6.3] - 2023-06-19
1216
a6a2dc4c
JB
1217### Fixed
1218
1219- Ensure no tasks are queued when trying to soft kill a dynamic worker.
f0d7f803 1220- Update strategies internals after statistics computation.
a6a2dc4c 1221
7b56f532
JB
1222### Changed
1223
1224- Optimize O(1) queue implementation.
1225
b628596c
JB
1226## [2.6.2] - 2023-06-12
1227
a9e89d00
JB
1228### Fixed
1229
1230- Fix new worker use after creation in dynamic pool given the current worker choice strategy.
1231
4368a898
JB
1232## [2.6.1] - 2023-06-10
1233
931d43e2
JB
1234### Added
1235
13ab5b87 1236- Add worker choice strategy documentation: [README.md](./docs/worker-choice-strategies.md).
931d43e2 1237
f1c06930
JB
1238### Fixed
1239
1240- Fix average statistics computation: ensure failed tasks are not accounted.
1241
16671b07
JB
1242## [2.6.0] - 2023-06-09
1243
a1347286
JB
1244### Added
1245
5af9c0f7 1246- Add `LEAST_ELU` worker choice strategy (experimental).
9adcefab 1247- Add tasks ELU instead of runtime support to `FAIR_SHARE` worker choice strategy.
a1347286 1248
1c6fe997
JB
1249### Changed
1250
1251- Refactor pool worker node usage internals.
477f48e7 1252- Breaking change: refactor worker choice strategy statistics requirements: the syntax of the worker choice strategy options has changed.
f63a9dda 1253- Breaking change: pool information `info` property object fields have been renamed.
1c6fe997
JB
1254
1255### Fixed
1256
1257- Fix wait time accounting.
1258- Ensure worker choice strategy `LEAST_BUSY` accounts also tasks wait time.
1259- Ensure worker choice strategy `LEAST_USED` accounts also queued tasks.
1260
aa07d6ee
JB
1261## [2.5.4] - 2023-06-07
1262
b6b32453
JB
1263### Added
1264
1265- Add Event Loop Utilization (ELU) statistics to worker tasks usage.
1266
1267### Changed
1268
1269- Compute statistics at the worker level only if needed.
2fbe1783 1270- Add `worker_threads` options to thread pool options.
b6b32453 1271
272d4d8f
JB
1272### Fixed
1273
1274- Make the `LEAST_BUSY` strategy only relies on task runtime.
1275
ed47fb3d
JB
1276## [2.5.3] - 2023-06-04
1277
89a4abfd
JB
1278### Changed
1279
1280- Refine pool information content.
b4213b7f 1281- Limit pool internals public exposure.
89a4abfd 1282
8a9febf5
JB
1283## [2.5.2] - 2023-06-02
1284
91ee39ed
JB
1285### Added
1286
1287- Add `taskError` pool event for task execution error.
6b27d407 1288- Add pool information `info` property to pool.
91ee39ed
JB
1289- Emit pool information on `busy` and `full` pool events.
1290
8babb151
JB
1291## [2.5.1] - 2023-06-01
1292
0e05c4dc
JB
1293### Added
1294
1f68cede 1295- Add pool option `restartWorkerOnError` to restart worker on uncaught error. Default to `true`.
91ee39ed 1296- Add `error` pool event for uncaught worker error.
0e05c4dc 1297
a8766181
JB
1298## [2.5.0] - 2023-05-31
1299
e4543b14
JB
1300### Added
1301
1302- Switch pool event emitter to `EventEmitterAsyncResource`.
6da80d38 1303- Add tasks wait time accounting in per worker tasks usage.
5af9c0f7 1304- Add interleaved weighted round robin `INTERLEAVED_WEIGHTED_ROUND_ROBIN` worker choice strategy (experimental).
e4543b14
JB
1305
1306### Changed
1307
1308- Renamed worker choice strategy `LESS_BUSY` to `LEAST_BUSY` and `LESS_USED` to `LEAST_USED`.
1309
570efb11
JB
1310## [2.4.14] - 2023-05-09
1311
b0f28bad
JB
1312### Fixed
1313
1314- Ensure no undefined task runtime can land in the tasks history.
1315- Fix median computation implementation once again.
1316
110b6d13
JB
1317### Added
1318
1319- Unit tests for median and queue implementations.
1320
72584880
JB
1321## [2.4.13] - 2023-05-08
1322
b0d6ed8f
JB
1323### Fixed
1324
e3058615 1325- Fix worker choice strategy options validation.
b0d6ed8f
JB
1326- Fix fair share worker choice strategy internals update: ensure virtual task end timestamp is computed at task submission.
1327
06140c32
JB
1328## [2.4.12] - 2023-05-06
1329
a86b6df1
JB
1330### Added
1331
1332- Support multiple task functions per worker.
08f3f44c 1333- Add custom worker weights support to worker choice strategies options.
a86b6df1 1334
29ee7e9a
JB
1335### Changed
1336
1337- Use O(1) queue implementation for tasks queueing.
1338
0682ba15
JB
1339### Fixed
1340
1341- Fix median computation implementation.
1342- Fix fair share worker choice strategy internals update.
1343
936d53ec
JB
1344## [2.4.11] - 2023-04-23
1345
cb70b19d
JB
1346### Changed
1347
1348- Optimize free worker finding in worker choice strategies.
1349
15bb637a
JB
1350## [2.4.10] - 2023-04-15
1351
ef41a6e6
JB
1352### Fixed
1353
82ea6492 1354- Fix typescript type definition for task function: ensure the input data is optional.
ef41a6e6
JB
1355- Fix typescript type definition for pool execute(): ensure the input data is optional.
1356
181eb2b4
JB
1357## [2.4.9] - 2023-04-15
1358
a20f0ba5
JB
1359### Added
1360
1361- Add tasks queue enablement runtime setter to pool.
1362- Add tasks queue options runtime setter to pool.
1363- Add worker choice strategy options runtime setter to pool.
1364
1365### Changed
1366
1367- Remove the tasks queuing experimental status.
1368
d4aeae5a
JB
1369### Fixed
1370
82ea6492 1371- Fix task function type definition and validation.
2fc5cae3 1372- Fix worker choice strategy options handling.
d4aeae5a 1373
1d9e7023
JB
1374## [2.4.8] - 2023-04-12
1375
f9b4bbf8
JB
1376### Fixed
1377
1378- Fix message between main worker and worker type definition for tasks.
1379- Fix code documentation.
1380
12ae3210
JB
1381## [2.4.7] - 2023-04-11
1382
7171d33f
JB
1383### Added
1384
1385- Add worker tasks queue options to pool options.
1386
e8bd29ce
JB
1387### Fixed
1388
1389- Fix missing documentation.
1390
42c7bc10
JB
1391## [2.4.6] - 2023-04-10
1392
681196cc
JB
1393### Fixed
1394
1395- Ensure one task at a time is executed per worker with tasks queueing enabled.
1c6fe997 1396- Properly count worker executing tasks with tasks queueing enabled.
681196cc 1397
54d360e3
JB
1398## [2.4.5] - 2023-04-09
1399
3fafb1b2
JB
1400### Added
1401
9e775f96
JB
1402- Use monotonic high resolution timer for worker tasks runtime.
1403- Add worker tasks median runtime to statistics.
ff733df7 1404- Add worker tasks queue (experimental).
3fafb1b2 1405
92fa3eb6
JB
1406## [2.4.4] - 2023-04-07
1407
aee46736
JB
1408### Added
1409
1410- Add `PoolEvents` enumeration and `PoolEvent` type.
1411
36b5e78f
JB
1412### Fixed
1413
ff0c2b3e 1414- Destroy worker only on alive check.
36b5e78f 1415
9fb0f324
JB
1416## [2.4.3] - 2023-04-07
1417
28cf3617
JB
1418### Fixed
1419
1420- Fix typedoc generation with inheritance.
1421
848f0f27
JB
1422## [2.4.2] - 2023-04-06
1423
164d950a
JB
1424### Added
1425
1426- Add `full` event to dynamic pool.
32417142 1427- Keep worker choice strategy in memory for conditional reuse.
164d950a 1428
78ab2555
JB
1429### Fixed
1430
1431- Fix possible negative worker key at worker removal in worker choice strategies.
1432
79aafe9f
JB
1433## [2.4.1] - 2023-04-05
1434
9cd39dd4
JB
1435### Changed
1436
1437- Optimize worker choice strategy for dynamic pool.
1438
965415bb
JB
1439### Fixed
1440
1441- Ensure dynamic pool does not alter worker choice strategy expected behavior.
1442
d8b60b1c
JB
1443## [2.4.0] - 2023-04-04
1444
c6bd2650
JB
1445### Added
1446
1447- Add `LESS_BUSY` worker choice strategy.
1448
1449### Changed
1450
1451- Optimize worker storage in pool.
1452- Optimize worker alive status check.
1453- BREAKING CHANGE: Rename worker choice strategy `LESS_RECENTLY_USED` to `LESS_USED`.
1454- Optimize `LESS_USED` worker choice strategy.
2a87030e 1455- Update benchmark versus external threads pools.
c6bd2650
JB
1456- Optimize tasks usage statistics requirements for worker choice strategy.
1457
1458### Fixed
1459
1460- Ensure trimmable characters are checked at pool initialization.
1461- Fix message id integer overflow.
1462- Fix pool worker removal in worker choice strategy internals.
1463- Fix package publication with pnpm.
1464
d0a3f018
JB
1465## [2.4.0-3] - 2023-04-04
1466
b2ede285
JB
1467### Added
1468
1469- Add `LESS_BUSY` worker choice strategy.
1470
1471### Changed
1472
1473- Optimize worker storage in pool.
1474- Optimize worker alive status check.
1475- BREAKING CHANGE: Rename worker choice strategy `LESS_RECENTLY_USED` to `LESS_USED`.
1476- Optimize `LESS_USED` worker choice strategy.
2a87030e 1477- Update benchmark versus external threads pools.
b2ede285
JB
1478
1479### Fixed
1480
1481- Ensure trimmable characters are checked at pool initialization.
1482- Fix message id integer overflow.
1483- Fix pool worker removal in worker choice strategy internals.
1484- Fix package publication with pnpm.
1485
a015ea40
JB
1486## [2.4.0-2] - 2023-04-03
1487
698f4bbc
JB
1488### Added
1489
1490- Add `LESS_BUSY` worker choice strategy.
1491
1492### Changed
1493
1494- Optimize worker storage in pool.
1495- Optimize worker alive status check.
1496- BREAKING CHANGE: Rename worker choice strategy `LESS_RECENTLY_USED` to `LESS_USED`.
1497- Optimize `LESS_USED` worker choice strategy.
1498
1499### Fixed
1500
1501- Ensure trimmable characters are checked at pool initialization.
1502- Fix message id integer overflow.
1503- Fix pool worker removal in worker choice strategy internals.
1504- Fix package publication with pnpm.
1505
8fe15920
JB
1506## [2.4.0-1] - 2023-04-03
1507
5b301c28
JB
1508### Added
1509
1510- Add `LESS_BUSY` worker choice strategy.
1511
1512### Changed
1513
1514- Optimize worker storage in pool.
1515- Optimize worker alive status check.
1516- BREAKING CHANGE: Rename worker choice strategy `LESS_RECENTLY_USED` to `LESS_USED`.
1517- Optimize `LESS_USED` worker choice strategy.
1518
1519### Fixed
1520
1521- Ensure trimmable characters are checked at pool initialization.
1522- Fix message id integer overflow.
1523- Fix pool worker removal in worker choice strategy internals.
1524
2fb9ca9c
JB
1525## [2.4.0-0] - 2023-04-03
1526
168c526f
JB
1527### Added
1528
1529- Add `LESS_BUSY` worker choice strategy.
1530
1d71a908
JB
1531### Changed
1532
ffcbbad8 1533- Optimize worker storage in pool.
1d71a908 1534- Optimize worker alive status check.
65a60b3b 1535- BREAKING CHANGE: Rename worker choice strategy `LESS_RECENTLY_USED` to `LESS_USED`.
737c6d97 1536- Optimize `LESS_USED` worker choice strategy.
1d71a908 1537
ffcbbad8
JB
1538### Fixed
1539
1540- Ensure trimmable characters are checked at pool initialization.
b4e75778 1541- Fix message id integer overflow.
97a2abc3 1542- Fix pool worker removal in worker choice strategy internals.
ffcbbad8 1543
08372738
JB
1544## [2.3.10] - 2023-03-18
1545
710826bc
JB
1546### Fixed
1547
9606b474 1548- Fix package.json `exports` syntax for ESM and CommonJS.
710826bc
JB
1549
1550### Changed
1551
1552- Permit SemVer pre-release publication.
76e5ac6f 1553
e4796ecd
JB
1554## [2.3.10-2] - 2023-03-18
1555
6abad580
JB
1556### Fixed
1557
9606b474 1558- Fix package.json `exports` syntax for ESM and CommonJS.
6abad580 1559
a2ee98cc
JB
1560## [2.3.10-1] - 2023-03-18
1561
7e060cee
JB
1562### Changed
1563
90483887 1564- Permit SemVer pre-release publication.
7e060cee 1565
c81bfafb
JB
1566## [2.3.10-0] - 2023-03-18
1567
fe18768d
JB
1568### Fixed
1569
9606b474 1570- Fix package.json `exports` syntax for ESM and CommonJS.
fe18768d 1571
d7b78217
JB
1572## [2.3.9] - 2023-03-18
1573
ed6dd37f
JB
1574### Changed
1575
1576- Introduce ESM module support along with CommonJS one.
1577
1578### Fixed
1579
1580- Fix brown paper bag bug referencing the same object literal.
1581
68e2ad86
JB
1582## [2.3.8] - 2023-03-18
1583
ca6c7d70
JB
1584### Changed
1585
1586- Switch internal benchmarking code to benny.
fbdedeb9
JB
1587- Switch to TypeScript 5.x.x.
1588- Switch rollup bundler plugins to core ones.
ed6dd37f 1589- Switch to TSDoc syntax.
fbdedeb9 1590- Enforce conventional commits.
ca6c7d70 1591
d15211d4
JB
1592### Fixed
1593
1594- Fix random integer generator.
fbdedeb9 1595- Fix worker choice strategy pool type identification at initialization.
d15211d4 1596
995705ea
JB
1597## [2.3.7] - 2022-10-23
1598
b953022b
JB
1599### Changed
1600
1601- Switch to open collective FOSS project funding platform.
78cea37e
JB
1602- Switch to ts-standard linter configuration on TypeScript code.
1603
1604### Fixed
1605
1606- Fixed missing async on pool execute method.
1607- Fixed typing in TypeScript example.
1608- Fixed types in unit tests.
b953022b 1609
3b9f6953
JB
1610## [2.3.6] - 2022-10-22
1611
f80cead4
JB
1612### Changed
1613
1614- Cleanup pool attributes and methods.
1615- Refine error types thrown.
1616
1617### Fixed
1618
1619- Fix continuous integration build on windows.
1620- Fix code coverage reporting by using c8 instead of nyc.
1621
efc22107
JB
1622## [2.3.5] - 2022-10-21
1623
7a6a0a96
JB
1624### Changed
1625
a05c10de
JB
1626- Improve benchmarks: add IO intensive task workload, add task size option, integrate code into linter.
1627- Optimize tasks usage lookup implementation.
7a6a0a96 1628
b4904890
JB
1629### Fixed
1630
1631- Fix missed pool event emitter type export.
1632- Fix typedoc documentation generation.
1633
a875f8d1
JB
1634## [2.3.4] - 2022-10-17
1635
73cda448
JB
1636### Added
1637
1638- Fully automate release process with release-it.
1639
45a5a54c
JB
1640### Changed
1641
73cda448 1642- Optimize fair share task scheduling algorithm implementation.
2a87030e 1643- Update benchmark versus external pools results with latest version.
45a5a54c 1644
90ee1b18 1645## [2.3.3] - 2022-10-15
1a76932b
JB
1646
1647### Added
1648
1649- Add support for [cluster settings](https://nodejs.org/api/cluster.html#cluster_cluster_settings) in cluster pool options.
1650
90ee1b18 1651## [2.3.2] - 2022-10-14
11df3590
JB
1652
1653### Changed
1654
1655- Optimize fair share worker selection strategy implementation.
1656
1657### Fixed
1658
1659- Fix WRR worker selection strategy: ensure the condition triggering the round robin can be fulfilled.
1660
90ee1b18 1661## [2.3.1] - 2022-10-13
23ff945a
JB
1662
1663### Added
1664
1665- Pool worker choice strategies:
1666 - `WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN` strategy based on weighted round robin scheduling algorithm using tasks execution time for now.
1667 - `WorkerChoiceStrategies.FAIR_SHARE` strategy based on fair share scheduling algorithm using tasks execution time for now.
1668
90ee1b18 1669## [2.2.2] - 2022-10-09
cb2b6c69
JB
1670
1671### Fixed
1672
1673- Fixed `README.md` file.
1674
90ee1b18 1675## [2.2.1] - 2022-10-08
bdacc2d2 1676
bdaf31cd
JB
1677### Added
1678
1679- Dynamic worker choice strategy change at runtime.
bdacc2d2 1680
90ee1b18 1681## [2.2.0] - 2022-01-05
7e0d447f
JB
1682
1683### Breaking Changes
1684
9606b474 1685- Support only Node.js version 16.x.x for cluster pool: upstream cluster API have changed on that version.
7e0d447f 1686
90ee1b18 1687## [2.1.0] - 2021-08-29
35cf1c03
JB
1688
1689### Added
1690
1691- Add an optional pool option `messageHandler` to `PoolOptions<Worker>` for registering a message handler callback on each worker.
e088a00c
JB
1692
1693### Breaking Changes
1694
1695- `AbstractWorker` class `maxInactiveTime`, `killBehavior` and `async` attributes have been removed in favour of the same ones in the worker options `opts` public attribute.
1696- `AbstractWorker` class `lastTask` attribute have been renamed to `lastTaskTimestamp`.
1697- `AbstractWorker` class `interval` attribute have been renamed to `aliveInterval`.
c365b2d3 1698- `AbstractWorker` class cannot be instantiated without specifying the `mainWorker` argument referencing the main worker.
e088a00c 1699
90ee1b18 1700## [2.0.2] - 2021-05-12
14916bf9
JB
1701
1702### Bug fixes
1703
1704- Fix `busy` event emission on fixed pool type
1705
90ee1b18 1706## [2.0.1] - 2021-03-16
7f685093
JB
1707
1708### Bug fixes
1709
1710- Check if pool options are properly set.
1711- `busy` event is emitted on all pool types.
1712
90ee1b18 1713## [2.0.0] - 2021-03-01
fa0f5b28 1714
f3f833ab 1715### Bug fixes
d63d3be3 1716
ddbeaffd 1717- Now a thread/process by default is not deleted when the task submitted take more time than maxInactiveTime configured (issue #70).
d63d3be3 1718
fa0f5b28
S
1719### Breaking Changes
1720
7f685093 1721- `FullPool` event is now renamed to `busy`.
1927ee67 1722- `maxInactiveTime` on `ThreadWorker` default behavior is now changed, if you want to keep the old behavior set `killBehavior` to `KillBehaviors.HARD`.
1a81f8af 1723 _Find more details on our JSDoc._
ddbeaffd 1724
1927ee67
APA
1725- `maxTasks` option on `FixedThreadPool` and `DynamicThreadPool` is now removed since is no more needed.
1726
ddbeaffd 1727- We changed some internal structures, but you shouldn't be too affected by them as these are internal changes.
fa0f5b28 1728
ec2ccfc8
JB
1729### Pool options types declaration merge
1730
1731`FixedThreadPoolOptions` and `DynamicThreadPoolOptions` type declarations have been merged to `PoolOptions<Worker>`.
1732
fa0f5b28
S
1733#### New `export` strategy
1734
1735```js
1736// Before
0eee77cb 1737const DynamicThreadPool = require('poolifier/lib/dynamic')
fa0f5b28 1738// After
0eee77cb 1739const { DynamicThreadPool } = require('poolifier/lib/dynamic')
fa0f5b28
S
1740```
1741
1742But you should always prefer just using
1743
1744```js
0eee77cb 1745const { DynamicThreadPool } = require('poolifier')
fa0f5b28
S
1746```
1747
d3c8a1a8
S
1748#### New type definitions for input data and response
1749
6677a3d3 1750For cluster worker and worker-thread pools, you can now only send and receive structured-cloneable data.
9606b474 1751_This is not a limitation by poolifier but Node.js._
d3c8a1a8 1752
3a4b605f 1753#### Public property replacements
5c5a1fb7 1754
3a4b605f 1755`numWorkers` property is now `numberOfWorkers`
5c5a1fb7 1756
280c2a77 1757#### Internal (protected) properties and methods renaming
fa0f5b28 1758
280c2a77
S
1759These properties are not intended for end users
1760
1761- `id` => `nextMessageId`
1762
1763These methods are not intended for end users
fa0f5b28
S
1764
1765- `_chooseWorker` => `chooseWorker`
280c2a77 1766- `_newWorker` => `createWorker`
fa0f5b28
S
1767- `_execute` => `internalExecute`
1768- `_chooseWorker` => `chooseWorker`
1769- `_checkAlive` => `checkAlive`
1770- `_run` => `run`
1771- `_runAsync` => `runAsync`
1772
90ee1b18 1773## [1.1.0] - 2020-05-21
0312f71a
APA
1774
1775### Added
1776
1777- ThreadWorker support async functions as option
cf9aa6c3 1778- Various external library patches
0312f71a 1779
90ee1b18 1780## [1.0.0] - 2020-01-24
522eea03 1781
1782### Added
1783
1784- FixedThreadPool implementation
1785- DynamicThreadPool implementation
0312f71a 1786- WorkerThread implementation to improve developer experience