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