perf: remove unneeded condition check
[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
45a5a54c 8## [Unreleased]
9aa78bcb 9
13b6dfca
JB
10## [4.0.14] - 2024-06-12
11
1b82b7cd
JB
12### Changed
13
262e9314 14- Add mapExecute() helper to execute a task function on an iterable data's input.
1b82b7cd 15
b3b1857b
JB
16## [4.0.13] - 2024-05-29
17
fcfc3353
JB
18### Changed
19
20- Optimize tasks queue implementation.
21- Enable prioritized tasks queueing only when necessary.
22
8e41ea40
JB
23## [4.0.12] - 2024-05-25
24
cccbe18a
JB
25### Changed
26
27- Optimize circular buffer implementation to store task execution measurements.
28
b537ee9c
JB
29## [4.0.11] - 2024-05-21
30
05a852b8
JB
31### Changed
32
686b339e 33- Switch to optimized circular buffer implementation to store task execution measurements.
05a852b8 34
40d04d55
JB
35## [4.0.10] - 2024-05-20
36
152e87a8
JB
37### Fixed
38
39- Ensure tasks stealing dynamic worker node is not destroyed on inactivity.
40
ea2c5b8b
JB
41## [4.0.9] - 2024-05-19
42
b947a3c0
JB
43### Changed
44
45- Add ELU `utilization` statistics to pool information.
46
a19a4833
JB
47## [4.0.8] - 2024-05-15
48
91041638
JB
49### Fixed
50
51- Fix default task function worker choice strategy and priority handling.
52
71ccb3ae
JB
53## [4.0.7] - 2024-05-13
54
533a8e22
JB
55### Changed
56
57- Add ELU statistics to pool information.
58
f829e037
JB
59## [4.0.6] - 2024-05-10
60
8a7b12f1
JB
61### Fixed
62
63- Fix pools' `addTaskFunction()` type definition.
64
7cdb9e56
JB
65## [4.0.5] - 2024-05-09
66
3e645903
JB
67### Fixed
68
69- Avoid queued tasks redistribution on the errored worker node.
70
97c12ef2
JB
71## [4.0.4] - 2024-05-08
72
2eee7220
JB
73### Fixed
74
75- Disable `tasksStealingOnBackPressure` by default until performance issues under heavy load are sorted out.
76
04f996c1
JB
77## [4.0.3] - 2024-05-08
78
0d4e88b3
JB
79### Changed
80
81- Optimize task(s) stealing by dequeuing task(s) from the last prioritized bucket.
82
0de45de9
JB
83## [4.0.2] - 2024-05-06
84
9a55fa8c
JB
85### Fixed
86
87- Ensure poolifier worker task performance measurement requirements are synchronized with task function objects' worker choice strategies.
88
840d1755
JB
89## [4.0.1] - 2024-05-02
90
e0843544
JB
91### Fixed
92
93- Ensure dynamic worker node are initialized with sensible worker node usage default values to avoid worker choice strategies biased decisions.
94- 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.
95
f18b1430
JB
96## [4.0.0] - 2024-04-30
97
f7a08a34
JB
98### Changed
99
3e3e2e5d
JB
100- 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 }`.
101- Add priority queue based tasks queueing. One priority queue is divided into prioritized buckets to avoid queued tasks starvation under load.
f7a08a34 102- BREAKING CHANGE: `listTaskFunctionNames()` to `listTaskFunctionsProperties()` in pool and worker API returning registered task functions properties.
3e3e2e5d
JB
103- BREAKING CHANGE: `strategy` field in pool information renamed to `defaultStrategy`.
104
105### Fixed
106
107- Ensure worker choice strategy options changes at runtime are propagated to poolifier workers.
f7a08a34 108
48eab590
JB
109## [3.1.30] - 2024-04-22
110
3e3e2e5d 111### Fixed
22bcc4f1
JB
112
113- Fix `transferList` argument type definition.
114
a2568a26
JB
115## [3.1.29] - 2024-04-02
116
3d720596
JB
117### Fixed
118
119- Fix possible race condition at worker node recreation on worker `error` and `exit` events.
120
d1fc382e
JB
121## [3.1.28] - 2024-04-01
122
60dc0a9c
JB
123### Fixed
124
125- Ensure the minimum number of workers on a started pool is guaranteed.
126
cf4c4b77
JB
127## [3.1.27] - 2024-03-27
128
1fee4f60
JB
129### Fixed
130
131- Fix publishing on JSR, take 4.
132
ac1f550f
JB
133## [3.1.26] - 2024-03-27
134
4ba59505
JB
135### Fixed
136
137- Fix publishing on JSR, take 3.
138
3b58238c
JB
139## [3.1.25] - 2024-03-27
140
41328ae5
JB
141### Fixed
142
143- Fix publishing on JSR, take 2.
144
8fddc9ad
JB
145## [3.1.24] - 2024-03-27
146
fcc6278e
JB
147### Fixed
148
149- Fix publishing on JSR.
150
7586f5a8
JB
151## [3.1.23] - 2024-03-27
152
b7bb8586
JB
153### Changed
154
155- Publish on JSR.
156
01f4a5ce
JB
157## [3.1.22] - 2024-03-15
158
d67bed32
JB
159### Fixed
160
161- Fix pool event emitter registered callbacks removal at `destroy()`.
162
6fd820e6
JB
163## [3.1.21] - 2024-02-22
164
369179f6
JB
165### Fixed
166
167- Fix null exception regression: [#1496](https://github.com/poolifier/poolifier/issues/1496).
168
c96e6364
JB
169## [3.1.20] - 2024-02-11
170
d20cde84
JB
171### Fixed
172
173- Ensure `worker_threads` workers are unreferenced at termination.
174
a7358578
JB
175## [3.1.19] - 2024-01-16
176
16d7e943
JB
177### Fixed
178
179- Fix possible null exception at task finishing handling.
180
57bf289f
JB
181### Changed
182
183- Optimize Deque implementation to improve tasks queueing performance.
184
7cf320c9
JB
185## [3.1.18] - 2024-01-06
186
6d7beb8c
JB
187### Fixed
188
189- Fix dynamic pool with minimum number of workers set to zero: [#1748](https://github.com/poolifier/poolifier/issues/1748).
190
a4bc8d0e
JB
191## [3.1.17] - 2024-01-05
192
2b6b412f
JB
193### Changed
194
195- Improve performance by clean up unneeded condition checks on hot code paths.
196
0d64fd53
JB
197## [3.1.16] - 2024-01-03
198
4302d959
JB
199### Fixed
200
201- Add missing type to TS type definitions.
202
9122cc2c
JB
203## [3.1.15] - 2024-01-02
204
a4d25410
JB
205### Fixed
206
207- Fix CommonJS support with TypeScript: [#1821](https://github.com/poolifier/poolifier/issues/1821).
208
565b7e65
JB
209## [3.1.15-0] - 2024-01-02
210
63406ebd
JB
211### Fixed
212
a4d25410 213- Fix CommonJS support with TypeScript: [#1821](https://github.com/poolifier/poolifier/issues/1821).
63406ebd 214
56412ef4
JB
215## [3.1.14] - 2024-01-01
216
e44639e9
JB
217### Fixed
218
219- Properly handle dynamic pool with zero minimum size.
220
5e133e82
JB
221## [3.1.13] - 2023-12-30
222
b20bf19a
JB
223### Changed
224
225- Reduce branching in several hot code paths.
226- Use faster object cloning implementation.
227
60aa9f2f
JB
228## [3.1.12] - 2023-12-27
229
28883f84
JB
230### Fixed
231
232- Fix tasks redistribution triggers at pool destroying.
233
234### Changed
235
236- Switch TypeScript module resolution to Node16.
237
164c80dd
JB
238## [3.1.12-0] - 2023-12-27
239
f4ef37a8
JB
240### Fixed
241
242- Fix tasks redistribution triggers at pool destroying.
243
0766991a
JB
244## [3.1.11] - 2023-12-24
245
5eb72b9e
JB
246### Fixed
247
248- Avoid worker node cross tasks stealing.
249- Ensure only half the pool worker nodes can steal tasks.
250
4618ccfd
JB
251## [3.1.10] - 2023-12-23
252
09616edb
JB
253### Changed
254
255- Avoid useless branching on pool type.
256
bba20209
JB
257## [3.1.9] - 2023-12-22
258
2889bd70
JB
259### Changed
260
261- Readd ThreadPoolOptions and ClusterPoolOptions TS type aliases to PoolOptions.
262
b1bbc365
JB
263## [3.1.8] - 2023-12-21
264
ad3836ed
JB
265### Fixed
266
267- Fix default worker weight computation.
268- Fix possible null exception at pool destroying.
269
72523ab9
JB
270## [3.1.7] - 2023-12-20
271
55d7d600
JB
272### Fixed
273
274- Ensure worker choice strategies implementation wait for worker node readiness: [#1748](https://github.com/poolifier/poolifier/issues/1748).
275
165f3d56
JB
276## [3.1.6] - 2023-12-18
277
85b2561d
JB
278### Fixed
279
280- Fix pool destroying with tasks queuing enabled.
281
6c8cec9e
JB
282## [3.1.5] - 2023-12-18
283
32b141fd
JB
284### Added
285
286- Add queued tasks end timeout support to worker node termination.
287
f11ec29c
JB
288## [3.1.4] - 2023-12-18
289
4e0afe97
JB
290### Fixed
291
292- Make more robust the fix for possible null exception at handling task execution response.
293
f592ef16
JB
294## [3.1.3] - 2023-12-17
295
9b358e72
JB
296### Fixed
297
298- Fix possible null exception at handling task execution response.
299
c61772e5
JB
300## [3.1.2] - 2023-12-17
301
87347ea8
JB
302### Fixed
303
32b141fd 304- Wait for queued tasks to end at worker node termination.
87347ea8 305
6e664bec
JB
306## [3.1.1] - 2023-12-16
307
51280f9b
JB
308### Fixed
309
310- Fix pool options TS type definition.
311
5362c66b
JB
312## [3.1.0] - 2023-12-16
313
c3719753
JB
314### Changed
315
316- TypeScript breaking change: merge ThreadPoolOptions and ClusterPoolOptions types into PoolOptions type.
317
42321a2b
JB
318## [3.0.14] - 2023-12-13
319
fa548cda
JB
320### Fixed
321
322- Fix possible null exception with worker_threads pools.
323
d727d871
JB
324## [3.0.13] - 2023-12-12
325
fb5a7307
JB
326### Fixed
327
328- Ensure worker choice strategy wait for worker nodes readiness.
329
330### Changed
331
332- Remove infinite retries support in worker choice strategy to avoid configuration leading to possible infinite recursion or loop.
333
90a43710
JB
334## [3.0.12] - 2023-12-12
335
9aa78bcb
JB
336### Changed
337
338- Add infinite retries support in worker choice strategy.
45a5a54c 339
d8163b08
JB
340## [3.0.11] - 2023-12-11
341
f18fd12b
JB
342### Fixed
343
457dd3dc 344- Ensure pool asynchronous resource properly track tasks execution.
f18fd12b 345
bd453998
JB
346## [3.0.10] - 2023-12-08
347
cb71d660
JB
348### Changed
349
457dd3dc 350- Add a fastpath when tasks stealing or redistribution is impossible.
cb71d660 351
d7164344
JB
352## [3.0.9] - 2023-11-26
353
78f60f82
JB
354### Fixed
355
356- Remove all pool events listener at pool destroying.
357- Remove all worker node events listener at worker node destroying.
9f99eb9b 358- Fix worker node event emitter listeners handling memory leak at pool options runtime change.
78f60f82 359
0c08a681
JB
360## [3.0.8] - 2023-11-25
361
463226a4
JB
362### Fixed
363
457dd3dc 364- Ensure continuous tasks stealing on idle start at worker node idling.
463226a4 365
14dad1fd
JB
366## [3.0.7] - 2023-11-24
367
65542a35
JB
368### Changed
369
370- Make continuous tasks stealing start at worker node idling.
371
82c5db63
JB
372## [3.0.6] - 2023-11-24
373
711623b8
JB
374### Fixed
375
b51d8596 376- Ensure pool statuses are checked at initialization, `start()` or `destroy()`.
55082af9 377- Ensure pool `ready` event can be emitted after several `start()/destroy()` cycles.
711623b8 378
5aa31a74
JB
379## [3.0.5] - 2023-10-27
380
d91689fd
JB
381### Fixed
382
55082af9 383- Ensure pool `ready` event can be emitted only once.
d91689fd 384
597775b2
JB
385## [3.0.4] - 2023-10-20
386
03fb313b
JB
387### Changed
388
49d60f11 389- Switch to Bencher for benchmarking: [https://bencher.dev/perf/poolifier](https://bencher.dev/perf/poolifier).
03fb313b
JB
390- Use builtin retry mechanism in worker choice strategies instead of custom one.
391
6c285176
JB
392## [3.0.3] - 2023-10-19
393
9761e404
JB
394### Fixed
395
396- Avoid null exception at sending message to worker.
535fd8d5 397- Avoid null exception at checking worker node readiness.
9761e404 398
358dc40f
JB
399## [3.0.2] - 2023-10-17
400
97256a85
JB
401### Fixed
402
c3c2b35e 403- 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 404
7a570743
JB
405## [3.0.1] - 2023-10-16
406
dbfa7948
JB
407### Fixed
408
fc84edac 409- Workaround possible race condition at work nodes array element removal and querying. See issue [#1468](https://github.com/poolifier/poolifier/issues/1468).
dbfa7948 410
365f13e4
JB
411### Changed
412
c3c2b35e 413- Switch the worker node eventing code to `EventTarget` API.
365f13e4 414
003b3275
JB
415## [3.0.0] - 2023-10-08
416
277c49bf
JB
417### Changed
418
419- Remove Node.js 16.x.x (EOL) support.
420
3c9e911a
JB
421## [2.7.5] - 2023-10-03
422
f80125ca
JB
423### Changed
424
425- Use `EventEmitterAsyncResource` type from `@types/node` for pool event emitter. TypeScript users will need to update to latest `@types/node` version.
426
3466e757
JB
427## [2.7.4] - 2023-09-25
428
67b26ae2
JB
429### Fixed
430
431- Fix source maps (bundler issue).
432
eeb1f961
JB
433## [2.7.3] - 2023-09-24
434
b5604034
JB
435### Changed
436
437- Convert pool event emitter to event emitter async resource.
438
f2df6dc8
JB
439## [2.7.2] - 2023-09-23
440
116ca64b
JB
441### Changed
442
443- Add source maps to npm package to ease debugging.
444
1e319a70
JB
445### Added
446
447- Continuous benchmarking versus other worker pools: [https://poolifier.github.io/benchmark](https://poolifier.github.io/benchmark).
448
aab2819b
JB
449## [2.7.1] - 2023-09-20
450
ae036c3e
JB
451### Fixed
452
453- Ensure worker message listener used one time are removed after usage.
454
15d7c489
JB
455## [2.7.0] - 2023-09-19
456
160557ff
JB
457### Fixed
458
459- Fix task stealing related tasks queue options handling at runtime.
460
c3284191
JB
461### Changed
462
463- Rename `listTaskFunctions()` to `listTaskFunctionNames()` in pool and worker API.
464
465### Added
466
35808931 467- Add `hasTaskFunction()`, `addTaskFunction()`, `removeTaskFunction()`, `setDefaultTaskFunction()` methods to pool API: [PR #1148](https://github.com/poolifier/poolifier/pull/1148).
c20084b6 468- Stricter worker constructor arguments validation.
c3284191 469
04054352
JB
470## [2.6.45] - 2023-09-17
471
093af25b
JB
472### Changed
473
474- Disable publication on GitHub packages registry on release until authentication issue is fixed.
09d9af02
JB
475
476### Added
477
ce0ab2d7 478- Add `startWorkers` to pool options to whether start the minimum number of workers at pool initialization or not.
cde5b54e 479- Add `start()` method to pool API to start the minimum number of workers.
2eee7220 480- 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 481- Continuous internal benchmarking: [https://poolifier.github.io/benchmark-results/dev/bench](https://poolifier.github.io/benchmark-results/dev/bench).
f1c674cd 482
bce9ffdf
JB
483## [2.6.44] - 2023-09-08
484
4cb259d3
JB
485### Fixed
486
487- Use a dedicated PAT to publish on GitHub packages registry.
488
489### Added
490
491- Publish on GitHub packages registry on release.
492
493### Changed
494
495- Switch from rome to biome: [PR #1128](https://github.com/poolifier/poolifier/pull/1128).
496
fbda1e26
JB
497## [2.6.43] - 2023-09-08
498
15fc82ba
JB
499### Added
500
4cb259d3 501- Publish on GitHub packages registry on release.
15fc82ba
JB
502
503### Changed
504
4cb259d3 505- Switch from rome to biome: [PR #1128](https://github.com/poolifier/poolifier/pull/1128).
15fc82ba 506
b47306a3
JB
507## [2.6.42] - 2023-09-06
508
ad11ca81
JB
509### Changed
510
511- Optimize hot code paths implementation: avoid unnecessary branching, add and use optimized helpers (min, max), use reduce() array helper, ...
512
1b37751d
JB
513## [2.6.41] - 2023-09-03
514
f3a91bac
JB
515### Changed
516
517- Optimize worker choice strategies implementation.
518
7790a494
JB
519## [2.6.40] - 2023-09-01
520
6fe200b4
JB
521### Fixed
522
523- Do not pre-choose in WRR worker choice strategy to avoid bias.
68738842 524- Avoid array out of bound in worker choice strategies after worker node removal.
6fe200b4 525
766c7f84
JB
526## [2.6.39] - 2023-08-30
527
edf8ce4e
JB
528### Fixed
529
4cb259d3 530- Fix race condition in worker choice strategies at worker node info querying while not yet initialized.
edf8ce4e 531
904a5689
JB
532## [2.6.38] - 2023-08-30
533
b40c4b06
JB
534### Added
535
536- Bundle typescript types declaration into one file.
537
619f403b
JB
538### Changed
539
540- Improve interleaved weighted round robin worker choice strategy implementation.
541
5a24d71c
JB
542## [2.6.37] - 2023-08-28
543
bdb9d712
JB
544### Fixed
545
546- Ensure unused worker usage statistics are deleted at runtime.
547
8c0b113f
JB
548### Changed
549
550- Rename worker choice strategy options `choiceRetries` to `retries`.
574c5c8d 551- Avoid unnecessary branching in worker choice strategies.
8c0b113f 552
ba821940
JB
553## [2.6.36] - 2023-08-27
554
9d2d0da1
JB
555### Fixed
556
557- Fix pool `execute()` arguments check.
558
1f0766e7
JB
559### Changed
560
561- Make continuous tasks stealing algorithm less aggressive.
8780236f 562- Fine tune tasks stealing algorithm under back pressure.
1f0766e7 563
ffd2c1ff
JB
564## [2.6.35] - 2023-08-25
565
dc021bcc
JB
566### Fixed
567
568- Don't account worker usage statistics for tasks that have failed.
3baa0837 569- Fix pool information runtime and wait time median computation.
dc021bcc
JB
570
571### Changed
572
573- Update simple moving average implementation to use a circular buffer.
574- Update simple moving median implementation to use a circular buffer.
68cbdc84
JB
575- Account for stolen tasks in worker usage statistics and pool information.
576
577### Added
578
579- Continuous tasks stealing algorithm.
dc021bcc 580
c58bc2a1
JB
581## [2.6.34] - 2023-08-24
582
0bc68267
JB
583### Fixes
584
585- Avoid cascading tasks stealing under back pressure.
586
587### Changed
588
589- Add fastpath to queued tasks rescheduling.
590
39fb7ad0
JB
591## [2.6.33] - 2023-08-24
592
dd951876
JB
593### Fixed
594
595- Fix queued tasks rescheduling.
596
ff3f866a
JB
597### Changed
598
599- Rename tasks queue options `queueMaxSize` to `size`.
600
a6b3272b 601### Added
dd951876 602
a6b3272b 603- Task stealing scheduling algorithm if tasks queueing is enabled.
dd951876 604
c55c9b5d
JB
605## [2.6.32] - 2023-08-23
606
15b176e0
JB
607### Fixed
608
609- Ensure no task can be executed when the pool is destroyed.
610
20c6f652
JB
611### Added
612
613- Add `queueMaxSize` option to tasks queue options.
574b351d 614- Add O(1) deque implementation implemented with doubly linked list and use it for tasks queueing.
72695f86 615- Add tasks stealing algorithm when a worker node queue is back pressured if tasks queueing is enabled.
20c6f652 616
e560a9f2
JB
617## [2.6.31] - 2023-08-20
618
b1aae695
JB
619### Fixed
620
3e8611a8 621- Fix worker choice strategy retries mechanism in some edge cases.
b1aae695 622
94407def
JB
623### Changed
624
e695d66f 625- Make orthogonal worker choice strategies tasks distribution and created dynamic worker usage.
a71b05bc 626- Remove the experimental status of the `LEAST_ELU` worker choice strategy.
94407def 627
962b9863
JB
628## [2.6.30] - 2023-08-19
629
33e6bb4c
JB
630### Fixed
631
632- Ensure pool event `backPressure` is emitted.
633- Ensure pool event `full` is emitted only once.
8735b4e5 634- Ensure worker node cannot be instantiated without proper arguments.
33e6bb4c 635
8cc4ea81
JB
636## [2.6.29] - 2023-08-18
637
6169563b
JB
638### Fixed
639
55082af9 640- Fix race condition between readiness and task functions worker message handling at startup.
5dd4043c 641- Fix duplicate task function worker usage statistics computation per task function.
db0e38ee 642- Update task function worker usage statistics if and only if there's at least two different task functions.
5bb5be17 643- Fix race condition at task function worker usage executing task computation leading to negative value.
6169563b 644
8990357d
JB
645### Added
646
445264e8 647- 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
648- Use back pressure detection in worker choice strategies.
649- Add worker choice strategies retries mechanism if no worker is eligible.
650
21157987
JB
651## [2.6.28] - 2023-08-16
652
f05ed93c
JB
653### Fixed
654
655- Ensure pool workers are properly initialized.
656
12d67776
JB
657### Added
658
659- HTTP server pool examples: express-cluster, express-hybrid.
660
d18fccb1
JB
661### Changed
662
663- Remove now useless branching in worker hot code path.
664
741cdb34
JB
665## [2.6.27] - 2023-08-15
666
50e7f498
JB
667### Fixed
668
669- Add `KillHandler` type definition to exported types.
670
ef3891a3
JB
671### Added
672
673- Add `destroy` event to pool API.
674
e9dc6efa
JB
675## [2.6.26] - 2023-08-15
676
2b099bf7
JB
677### Added
678
679- Add kill handler to worker options allowing to execute custom code when worker is killed.
ef3891a3 680- Add `listTaskFunctions()` method to pool API.
1f4553c6 681- SMTP client pool example: nodemailer.
2b099bf7 682
5b726f72
JB
683## [2.6.25] - 2023-08-13
684
72855e92
JB
685### Added
686
3b311539 687- HTTP server pool examples: fastify-cluster, fastify-hybrid.
02999424 688- WebSocket server pool examples: ws-cluster, ws-hybrid.
72855e92 689
7aadd6e5
JB
690## [2.6.24] - 2023-08-12
691
7d91a8cd
JB
692### Added
693
694- Add array of transferable objects to the `execute()` method arguments.
02999424 695- WebSocket server pool examples: ws-worker_threads.
7d91a8cd 696
6b4263b4
JB
697## [2.6.23] - 2023-08-11
698
3d76750a 699### Fixed
8e0af894 700
3d76750a 701- 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 702
3d76750a
JB
703### Added
704
705- HTTP client pool examples: fetch, node-fetch and axios with multiple task functions.
02999424 706- HTTP server pool examples: express-worker_threads, fastify-worker_threads.
3d76750a
JB
707
708## [2.6.22] - 2023-08-10
9606b474 709
3d76750a 710### Fixed
9606b474
JB
711
712- Add missing `types` field to package.json `exports`.
713
3d76750a
JB
714### Changed
715
716- Structure markdown documentation (PR #811).
717
d9647bdd
JB
718## [2.6.21] - 2023-08-03
719
2111ec12
JB
720### Changed
721
722- Improve code documentation.
723- Code refactoring and cleanup for better maintainability and readability.
724
5c30b9d9
JB
725## [2.6.20] - 2023-07-21
726
10ecf8fd
JB
727### Fixed
728
729- Fix queued tasks redistribution on error task execution starvation.
a1763c54 730- Ensure tasks queueing per worker condition is untangled from the pool busyness semantic.
10ecf8fd 731
aa9eede8
JB
732### Changed
733
7c89e6a4 734- Drastically reduce lookups by worker in the worker nodes.
aa9eede8 735
62485908
JB
736## [2.6.19] - 2023-07-20
737
2e2ef9c3
JB
738### Added
739
740- Dedicated internal communication channel for worker_threads pools.
741
8f4c9491
JB
742## [2.6.18] - 2023-07-19
743
8660b972
JB
744### Changed
745
746- Code refactoring and cleanup for better maintainability and readability. Bundle size is a bit smaller.
747
206a3519
JB
748## [2.6.17] - 2023-07-16
749
b4899fae
JB
750### Added
751
1a3e01ba 752- Add `listTaskFunctions()` method to worker API.
b4899fae 753
58a06a6c
JB
754## [2.6.16] - 2023-07-12
755
2a69b8c5
JB
756### Fixed
757
80520ca4 758- Fix pool startup detection.
2a69b8c5
JB
759- Fix worker task functions handling.
760
b5900b02
JB
761## [2.6.15] - 2023-07-11
762
19dbc45b
JB
763### Added
764
765- Take into account worker node readiness in worker choice strategies.
766
4a0db581
JB
767## [2.6.14] - 2023-07-10
768
87e44747
JB
769### Fixed
770
771- Fix task function statistics tracking.
772
0265272f
JB
773## [2.6.13] - 2023-07-10
774
968a2e8c
JB
775### Added
776
777- Add per task function statistics tracking.
782299f8 778- Add public methods to manipulate the worker task functions at runtime.
968a2e8c 779
44c8c00f
JB
780## [2.6.12] - 2023-07-09
781
aa4bf4b2
JB
782### Fixed
783
784- Workaround import issue with `node:os` module in node 16.x.x.
785
b7cfced1
JB
786## [2.6.11] - 2023-07-09
787
d5024c00
JB
788### Fixed
789
790- Fix pool readiness semantic.
791
f313a208
JB
792## [2.6.10] - 2023-07-08
793
2431bdb4
JB
794### Fixed
795
796- Ensure workers are not recreated on error at pool startup.
797
798### Added
799
800- Add `ready` and `strategy` fields to pool information.
801- 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 802- Add dynamic pool sizing checks.
2431bdb4 803
369d0a51
JB
804## [2.6.9] - 2023-07-07
805
2845f2a5
JB
806### Fixed
807
808- Recreate the right worker type on uncaught exception.
809
810### Added
811
812- Add minimum and maximum to internal measurement statistics.
1dcf8b7b 813- Add `runTime` and `waitTime` to pool information.
75d3401a 814- Check worker inactive time only on dynamic worker.
2845f2a5 815
fc97d613
JB
816## [2.6.8] - 2023-07-03
817
92b1feaa
JB
818### Fixed
819
820- Brown paper bag release to fix version handling in pool information.
821
52d54060
JB
822## [2.6.7] - 2023-07-03
823
5bc91f3e
JB
824### Fixed
825
826- Ensure worker queued tasks at error are reassigned to other pool workers.
827
afe0d5bf
JB
828### Added
829
830- Add pool `utilization` ratio to pool information.
23ccf9d7 831- Add `version` to pool information.
e5b3047d 832- Add worker information to worker nodes.
afe0d5bf 833
f42c583f
JB
834## [2.6.6] - 2023-07-01
835
6961ca9a
JB
836### Added
837
d5e3c4ff 838- Add safe helper `availableParallelism()` to help sizing the pool.
6961ca9a 839
3749facb
JB
840### Fixed
841
842- Ensure message handler is only registered in worker.
843
6fed2513
JB
844## [2.6.5] - 2023-06-27
845
c72f6987
JB
846### Known issues
847
70726c28 848- Cluster pools tasks execution are not working by using ESM files extension: https://github.com/poolifier/poolifier/issues/782
c72f6987
JB
849
850### Fixed
851
852- Artificial version bump to 2.6.5 to workaround publication issue.
d5e3c4ff 853- Ensure cluster pool `destroy()` gracefully shutdowns worker's server.
c72f6987
JB
854- Ensure pool event is emitted before task error promise rejection.
855- Fix queued tasks count computation.
856
857### Removed
858
2fbe1783 859- Remove unneeded worker_threads worker `MessageChannel` internal usage for IPC.
c72f6987 860
6426631b
JB
861## [2.6.4] - 2023-06-27
862
941f9a7c
JB
863### Known issues
864
70726c28 865- Cluster pools tasks execution are not working by using ESM files extension: https://github.com/poolifier/poolifier/issues/782
941f9a7c 866
2c039e43
JB
867### Fixed
868
d5e3c4ff 869- Ensure cluster pool `destroy()` gracefully shutdowns worker's server.
2c039e43 870- Ensure pool event is emitted before task error promise rejection.
9c16fb4b 871- Fix queued tasks count computation.
2c039e43 872
941f9a7c
JB
873### Removed
874
2fbe1783 875- Remove unneeded worker_threads worker `MessageChannel` internal usage for IPC.
941f9a7c 876
bc1b0765
JB
877## [2.6.3] - 2023-06-19
878
a6a2dc4c
JB
879### Fixed
880
881- Ensure no tasks are queued when trying to soft kill a dynamic worker.
f0d7f803 882- Update strategies internals after statistics computation.
a6a2dc4c 883
7b56f532
JB
884### Changed
885
886- Optimize O(1) queue implementation.
887
b628596c
JB
888## [2.6.2] - 2023-06-12
889
a9e89d00
JB
890### Fixed
891
892- Fix new worker use after creation in dynamic pool given the current worker choice strategy.
893
4368a898
JB
894## [2.6.1] - 2023-06-10
895
931d43e2
JB
896### Added
897
13ab5b87 898- Add worker choice strategy documentation: [README.md](./docs/worker-choice-strategies.md).
931d43e2 899
f1c06930
JB
900### Fixed
901
902- Fix average statistics computation: ensure failed tasks are not accounted.
903
16671b07
JB
904## [2.6.0] - 2023-06-09
905
a1347286
JB
906### Added
907
5af9c0f7 908- Add `LEAST_ELU` worker choice strategy (experimental).
9adcefab 909- Add tasks ELU instead of runtime support to `FAIR_SHARE` worker choice strategy.
a1347286 910
1c6fe997
JB
911### Changed
912
913- Refactor pool worker node usage internals.
477f48e7 914- Breaking change: refactor worker choice strategy statistics requirements: the syntax of the worker choice strategy options has changed.
f63a9dda 915- Breaking change: pool information `info` property object fields have been renamed.
1c6fe997
JB
916
917### Fixed
918
919- Fix wait time accounting.
920- Ensure worker choice strategy `LEAST_BUSY` accounts also tasks wait time.
921- Ensure worker choice strategy `LEAST_USED` accounts also queued tasks.
922
aa07d6ee
JB
923## [2.5.4] - 2023-06-07
924
b6b32453
JB
925### Added
926
927- Add Event Loop Utilization (ELU) statistics to worker tasks usage.
928
929### Changed
930
931- Compute statistics at the worker level only if needed.
2fbe1783 932- Add `worker_threads` options to thread pool options.
b6b32453 933
272d4d8f
JB
934### Fixed
935
936- Make the `LEAST_BUSY` strategy only relies on task runtime.
937
ed47fb3d
JB
938## [2.5.3] - 2023-06-04
939
89a4abfd
JB
940### Changed
941
942- Refine pool information content.
b4213b7f 943- Limit pool internals public exposure.
89a4abfd 944
8a9febf5
JB
945## [2.5.2] - 2023-06-02
946
91ee39ed
JB
947### Added
948
949- Add `taskError` pool event for task execution error.
6b27d407 950- Add pool information `info` property to pool.
91ee39ed
JB
951- Emit pool information on `busy` and `full` pool events.
952
8babb151
JB
953## [2.5.1] - 2023-06-01
954
0e05c4dc
JB
955### Added
956
1f68cede 957- Add pool option `restartWorkerOnError` to restart worker on uncaught error. Default to `true`.
91ee39ed 958- Add `error` pool event for uncaught worker error.
0e05c4dc 959
a8766181
JB
960## [2.5.0] - 2023-05-31
961
e4543b14
JB
962### Added
963
964- Switch pool event emitter to `EventEmitterAsyncResource`.
6da80d38 965- Add tasks wait time accounting in per worker tasks usage.
5af9c0f7 966- Add interleaved weighted round robin `INTERLEAVED_WEIGHTED_ROUND_ROBIN` worker choice strategy (experimental).
e4543b14
JB
967
968### Changed
969
970- Renamed worker choice strategy `LESS_BUSY` to `LEAST_BUSY` and `LESS_USED` to `LEAST_USED`.
971
570efb11
JB
972## [2.4.14] - 2023-05-09
973
b0f28bad
JB
974### Fixed
975
976- Ensure no undefined task runtime can land in the tasks history.
977- Fix median computation implementation once again.
978
110b6d13
JB
979### Added
980
981- Unit tests for median and queue implementations.
982
72584880
JB
983## [2.4.13] - 2023-05-08
984
b0d6ed8f
JB
985### Fixed
986
e3058615 987- Fix worker choice strategy options validation.
b0d6ed8f
JB
988- Fix fair share worker choice strategy internals update: ensure virtual task end timestamp is computed at task submission.
989
06140c32
JB
990## [2.4.12] - 2023-05-06
991
a86b6df1
JB
992### Added
993
994- Support multiple task functions per worker.
08f3f44c 995- Add custom worker weights support to worker choice strategies options.
a86b6df1 996
29ee7e9a
JB
997### Changed
998
999- Use O(1) queue implementation for tasks queueing.
1000
0682ba15
JB
1001### Fixed
1002
1003- Fix median computation implementation.
1004- Fix fair share worker choice strategy internals update.
1005
936d53ec
JB
1006## [2.4.11] - 2023-04-23
1007
cb70b19d
JB
1008### Changed
1009
1010- Optimize free worker finding in worker choice strategies.
1011
15bb637a
JB
1012## [2.4.10] - 2023-04-15
1013
ef41a6e6
JB
1014### Fixed
1015
82ea6492 1016- Fix typescript type definition for task function: ensure the input data is optional.
ef41a6e6
JB
1017- Fix typescript type definition for pool execute(): ensure the input data is optional.
1018
181eb2b4
JB
1019## [2.4.9] - 2023-04-15
1020
a20f0ba5
JB
1021### Added
1022
1023- Add tasks queue enablement runtime setter to pool.
1024- Add tasks queue options runtime setter to pool.
1025- Add worker choice strategy options runtime setter to pool.
1026
1027### Changed
1028
1029- Remove the tasks queuing experimental status.
1030
d4aeae5a
JB
1031### Fixed
1032
82ea6492 1033- Fix task function type definition and validation.
2fc5cae3 1034- Fix worker choice strategy options handling.
d4aeae5a 1035
1d9e7023
JB
1036## [2.4.8] - 2023-04-12
1037
f9b4bbf8
JB
1038### Fixed
1039
1040- Fix message between main worker and worker type definition for tasks.
1041- Fix code documentation.
1042
12ae3210
JB
1043## [2.4.7] - 2023-04-11
1044
7171d33f
JB
1045### Added
1046
1047- Add worker tasks queue options to pool options.
1048
e8bd29ce
JB
1049### Fixed
1050
1051- Fix missing documentation.
1052
42c7bc10
JB
1053## [2.4.6] - 2023-04-10
1054
681196cc
JB
1055### Fixed
1056
1057- Ensure one task at a time is executed per worker with tasks queueing enabled.
1c6fe997 1058- Properly count worker executing tasks with tasks queueing enabled.
681196cc 1059
54d360e3
JB
1060## [2.4.5] - 2023-04-09
1061
3fafb1b2
JB
1062### Added
1063
9e775f96
JB
1064- Use monotonic high resolution timer for worker tasks runtime.
1065- Add worker tasks median runtime to statistics.
ff733df7 1066- Add worker tasks queue (experimental).
3fafb1b2 1067
92fa3eb6
JB
1068## [2.4.4] - 2023-04-07
1069
aee46736
JB
1070### Added
1071
1072- Add `PoolEvents` enumeration and `PoolEvent` type.
1073
36b5e78f
JB
1074### Fixed
1075
ff0c2b3e 1076- Destroy worker only on alive check.
36b5e78f 1077
9fb0f324
JB
1078## [2.4.3] - 2023-04-07
1079
28cf3617
JB
1080### Fixed
1081
1082- Fix typedoc generation with inheritance.
1083
848f0f27
JB
1084## [2.4.2] - 2023-04-06
1085
164d950a
JB
1086### Added
1087
1088- Add `full` event to dynamic pool.
32417142 1089- Keep worker choice strategy in memory for conditional reuse.
164d950a 1090
78ab2555
JB
1091### Fixed
1092
1093- Fix possible negative worker key at worker removal in worker choice strategies.
1094
79aafe9f
JB
1095## [2.4.1] - 2023-04-05
1096
9cd39dd4
JB
1097### Changed
1098
1099- Optimize worker choice strategy for dynamic pool.
1100
965415bb
JB
1101### Fixed
1102
1103- Ensure dynamic pool does not alter worker choice strategy expected behavior.
1104
d8b60b1c
JB
1105## [2.4.0] - 2023-04-04
1106
c6bd2650
JB
1107### Added
1108
1109- Add `LESS_BUSY` worker choice strategy.
1110
1111### Changed
1112
1113- Optimize worker storage in pool.
1114- Optimize worker alive status check.
1115- BREAKING CHANGE: Rename worker choice strategy `LESS_RECENTLY_USED` to `LESS_USED`.
1116- Optimize `LESS_USED` worker choice strategy.
2a87030e 1117- Update benchmark versus external threads pools.
c6bd2650
JB
1118- Optimize tasks usage statistics requirements for worker choice strategy.
1119
1120### Fixed
1121
1122- Ensure trimmable characters are checked at pool initialization.
1123- Fix message id integer overflow.
1124- Fix pool worker removal in worker choice strategy internals.
1125- Fix package publication with pnpm.
1126
d0a3f018
JB
1127## [2.4.0-3] - 2023-04-04
1128
b2ede285
JB
1129### Added
1130
1131- Add `LESS_BUSY` worker choice strategy.
1132
1133### Changed
1134
1135- Optimize worker storage in pool.
1136- Optimize worker alive status check.
1137- BREAKING CHANGE: Rename worker choice strategy `LESS_RECENTLY_USED` to `LESS_USED`.
1138- Optimize `LESS_USED` worker choice strategy.
2a87030e 1139- Update benchmark versus external threads pools.
b2ede285
JB
1140
1141### Fixed
1142
1143- Ensure trimmable characters are checked at pool initialization.
1144- Fix message id integer overflow.
1145- Fix pool worker removal in worker choice strategy internals.
1146- Fix package publication with pnpm.
1147
a015ea40
JB
1148## [2.4.0-2] - 2023-04-03
1149
698f4bbc
JB
1150### Added
1151
1152- Add `LESS_BUSY` worker choice strategy.
1153
1154### Changed
1155
1156- Optimize worker storage in pool.
1157- Optimize worker alive status check.
1158- BREAKING CHANGE: Rename worker choice strategy `LESS_RECENTLY_USED` to `LESS_USED`.
1159- Optimize `LESS_USED` worker choice strategy.
1160
1161### Fixed
1162
1163- Ensure trimmable characters are checked at pool initialization.
1164- Fix message id integer overflow.
1165- Fix pool worker removal in worker choice strategy internals.
1166- Fix package publication with pnpm.
1167
8fe15920
JB
1168## [2.4.0-1] - 2023-04-03
1169
5b301c28
JB
1170### Added
1171
1172- Add `LESS_BUSY` worker choice strategy.
1173
1174### Changed
1175
1176- Optimize worker storage in pool.
1177- Optimize worker alive status check.
1178- BREAKING CHANGE: Rename worker choice strategy `LESS_RECENTLY_USED` to `LESS_USED`.
1179- Optimize `LESS_USED` worker choice strategy.
1180
1181### Fixed
1182
1183- Ensure trimmable characters are checked at pool initialization.
1184- Fix message id integer overflow.
1185- Fix pool worker removal in worker choice strategy internals.
1186
2fb9ca9c
JB
1187## [2.4.0-0] - 2023-04-03
1188
168c526f
JB
1189### Added
1190
1191- Add `LESS_BUSY` worker choice strategy.
1192
1d71a908
JB
1193### Changed
1194
ffcbbad8 1195- Optimize worker storage in pool.
1d71a908 1196- Optimize worker alive status check.
65a60b3b 1197- BREAKING CHANGE: Rename worker choice strategy `LESS_RECENTLY_USED` to `LESS_USED`.
737c6d97 1198- Optimize `LESS_USED` worker choice strategy.
1d71a908 1199
ffcbbad8
JB
1200### Fixed
1201
1202- Ensure trimmable characters are checked at pool initialization.
b4e75778 1203- Fix message id integer overflow.
97a2abc3 1204- Fix pool worker removal in worker choice strategy internals.
ffcbbad8 1205
08372738
JB
1206## [2.3.10] - 2023-03-18
1207
710826bc
JB
1208### Fixed
1209
9606b474 1210- Fix package.json `exports` syntax for ESM and CommonJS.
710826bc
JB
1211
1212### Changed
1213
1214- Permit SemVer pre-release publication.
76e5ac6f 1215
e4796ecd
JB
1216## [2.3.10-2] - 2023-03-18
1217
6abad580
JB
1218### Fixed
1219
9606b474 1220- Fix package.json `exports` syntax for ESM and CommonJS.
6abad580 1221
a2ee98cc
JB
1222## [2.3.10-1] - 2023-03-18
1223
7e060cee
JB
1224### Changed
1225
90483887 1226- Permit SemVer pre-release publication.
7e060cee 1227
c81bfafb
JB
1228## [2.3.10-0] - 2023-03-18
1229
fe18768d
JB
1230### Fixed
1231
9606b474 1232- Fix package.json `exports` syntax for ESM and CommonJS.
fe18768d 1233
d7b78217
JB
1234## [2.3.9] - 2023-03-18
1235
ed6dd37f
JB
1236### Changed
1237
1238- Introduce ESM module support along with CommonJS one.
1239
1240### Fixed
1241
1242- Fix brown paper bag bug referencing the same object literal.
1243
68e2ad86
JB
1244## [2.3.8] - 2023-03-18
1245
ca6c7d70
JB
1246### Changed
1247
1248- Switch internal benchmarking code to benny.
fbdedeb9
JB
1249- Switch to TypeScript 5.x.x.
1250- Switch rollup bundler plugins to core ones.
ed6dd37f 1251- Switch to TSDoc syntax.
fbdedeb9 1252- Enforce conventional commits.
ca6c7d70 1253
d15211d4
JB
1254### Fixed
1255
1256- Fix random integer generator.
fbdedeb9 1257- Fix worker choice strategy pool type identification at initialization.
d15211d4 1258
995705ea
JB
1259## [2.3.7] - 2022-10-23
1260
b953022b
JB
1261### Changed
1262
1263- Switch to open collective FOSS project funding platform.
78cea37e
JB
1264- Switch to ts-standard linter configuration on TypeScript code.
1265
1266### Fixed
1267
1268- Fixed missing async on pool execute method.
1269- Fixed typing in TypeScript example.
1270- Fixed types in unit tests.
b953022b 1271
3b9f6953
JB
1272## [2.3.6] - 2022-10-22
1273
f80cead4
JB
1274### Changed
1275
1276- Cleanup pool attributes and methods.
1277- Refine error types thrown.
1278
1279### Fixed
1280
1281- Fix continuous integration build on windows.
1282- Fix code coverage reporting by using c8 instead of nyc.
1283
efc22107
JB
1284## [2.3.5] - 2022-10-21
1285
7a6a0a96
JB
1286### Changed
1287
a05c10de
JB
1288- Improve benchmarks: add IO intensive task workload, add task size option, integrate code into linter.
1289- Optimize tasks usage lookup implementation.
7a6a0a96 1290
b4904890
JB
1291### Fixed
1292
1293- Fix missed pool event emitter type export.
1294- Fix typedoc documentation generation.
1295
a875f8d1
JB
1296## [2.3.4] - 2022-10-17
1297
73cda448
JB
1298### Added
1299
1300- Fully automate release process with release-it.
1301
45a5a54c
JB
1302### Changed
1303
73cda448 1304- Optimize fair share task scheduling algorithm implementation.
2a87030e 1305- Update benchmark versus external pools results with latest version.
45a5a54c 1306
90ee1b18 1307## [2.3.3] - 2022-10-15
1a76932b
JB
1308
1309### Added
1310
1311- Add support for [cluster settings](https://nodejs.org/api/cluster.html#cluster_cluster_settings) in cluster pool options.
1312
90ee1b18 1313## [2.3.2] - 2022-10-14
11df3590
JB
1314
1315### Changed
1316
1317- Optimize fair share worker selection strategy implementation.
1318
1319### Fixed
1320
1321- Fix WRR worker selection strategy: ensure the condition triggering the round robin can be fulfilled.
1322
90ee1b18 1323## [2.3.1] - 2022-10-13
23ff945a
JB
1324
1325### Added
1326
1327- Pool worker choice strategies:
1328 - `WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN` strategy based on weighted round robin scheduling algorithm using tasks execution time for now.
1329 - `WorkerChoiceStrategies.FAIR_SHARE` strategy based on fair share scheduling algorithm using tasks execution time for now.
1330
90ee1b18 1331## [2.2.2] - 2022-10-09
cb2b6c69
JB
1332
1333### Fixed
1334
1335- Fixed `README.md` file.
1336
90ee1b18 1337## [2.2.1] - 2022-10-08
bdacc2d2 1338
bdaf31cd
JB
1339### Added
1340
1341- Dynamic worker choice strategy change at runtime.
bdacc2d2 1342
90ee1b18 1343## [2.2.0] - 2022-01-05
7e0d447f
JB
1344
1345### Breaking Changes
1346
9606b474 1347- Support only Node.js version 16.x.x for cluster pool: upstream cluster API have changed on that version.
7e0d447f 1348
90ee1b18 1349## [2.1.0] - 2021-08-29
35cf1c03
JB
1350
1351### Added
1352
1353- Add an optional pool option `messageHandler` to `PoolOptions<Worker>` for registering a message handler callback on each worker.
e088a00c
JB
1354
1355### Breaking Changes
1356
1357- `AbstractWorker` class `maxInactiveTime`, `killBehavior` and `async` attributes have been removed in favour of the same ones in the worker options `opts` public attribute.
1358- `AbstractWorker` class `lastTask` attribute have been renamed to `lastTaskTimestamp`.
1359- `AbstractWorker` class `interval` attribute have been renamed to `aliveInterval`.
c365b2d3 1360- `AbstractWorker` class cannot be instantiated without specifying the `mainWorker` argument referencing the main worker.
e088a00c 1361
90ee1b18 1362## [2.0.2] - 2021-05-12
14916bf9
JB
1363
1364### Bug fixes
1365
1366- Fix `busy` event emission on fixed pool type
1367
90ee1b18 1368## [2.0.1] - 2021-03-16
7f685093
JB
1369
1370### Bug fixes
1371
1372- Check if pool options are properly set.
1373- `busy` event is emitted on all pool types.
1374
90ee1b18 1375## [2.0.0] - 2021-03-01
fa0f5b28 1376
f3f833ab 1377### Bug fixes
d63d3be3 1378
ddbeaffd 1379- Now a thread/process by default is not deleted when the task submitted take more time than maxInactiveTime configured (issue #70).
d63d3be3 1380
fa0f5b28
S
1381### Breaking Changes
1382
7f685093 1383- `FullPool` event is now renamed to `busy`.
1927ee67 1384- `maxInactiveTime` on `ThreadWorker` default behavior is now changed, if you want to keep the old behavior set `killBehavior` to `KillBehaviors.HARD`.
1a81f8af 1385 _Find more details on our JSDoc._
ddbeaffd 1386
1927ee67
APA
1387- `maxTasks` option on `FixedThreadPool` and `DynamicThreadPool` is now removed since is no more needed.
1388
ddbeaffd 1389- We changed some internal structures, but you shouldn't be too affected by them as these are internal changes.
fa0f5b28 1390
ec2ccfc8
JB
1391### Pool options types declaration merge
1392
1393`FixedThreadPoolOptions` and `DynamicThreadPoolOptions` type declarations have been merged to `PoolOptions<Worker>`.
1394
fa0f5b28
S
1395#### New `export` strategy
1396
1397```js
1398// Before
0eee77cb 1399const DynamicThreadPool = require('poolifier/lib/dynamic')
fa0f5b28 1400// After
0eee77cb 1401const { DynamicThreadPool } = require('poolifier/lib/dynamic')
fa0f5b28
S
1402```
1403
1404But you should always prefer just using
1405
1406```js
0eee77cb 1407const { DynamicThreadPool } = require('poolifier')
fa0f5b28
S
1408```
1409
d3c8a1a8
S
1410#### New type definitions for input data and response
1411
6677a3d3 1412For cluster worker and worker-thread pools, you can now only send and receive structured-cloneable data.
9606b474 1413_This is not a limitation by poolifier but Node.js._
d3c8a1a8 1414
3a4b605f 1415#### Public property replacements
5c5a1fb7 1416
3a4b605f 1417`numWorkers` property is now `numberOfWorkers`
5c5a1fb7 1418
280c2a77 1419#### Internal (protected) properties and methods renaming
fa0f5b28 1420
280c2a77
S
1421These properties are not intended for end users
1422
1423- `id` => `nextMessageId`
1424
1425These methods are not intended for end users
fa0f5b28
S
1426
1427- `_chooseWorker` => `chooseWorker`
280c2a77 1428- `_newWorker` => `createWorker`
fa0f5b28
S
1429- `_execute` => `internalExecute`
1430- `_chooseWorker` => `chooseWorker`
1431- `_checkAlive` => `checkAlive`
1432- `_run` => `run`
1433- `_runAsync` => `runAsync`
1434
90ee1b18 1435## [1.1.0] - 2020-05-21
0312f71a
APA
1436
1437### Added
1438
1439- ThreadWorker support async functions as option
cf9aa6c3 1440- Various external library patches
0312f71a 1441
90ee1b18 1442## [1.0.0] - 2020-01-24
522eea03 1443
1444### Added
1445
1446- FixedThreadPool implementation
1447- DynamicThreadPool implementation
0312f71a 1448- WorkerThread implementation to improve developer experience