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