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