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