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