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