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