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