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