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