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