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