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