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