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