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