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