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