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