refactor: reorder pool options validation
[poolifier.git] / CHANGELOG.md
... / ...
CommitLineData
1# Changelog
2
3All notable changes to this project will be documented in this file.
4
5The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
6and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
8## [Unreleased]
9
10### Fixed
11
12- Fix task stealing related tasks queue options handling at runtime.
13
14## [2.6.45] - 2023-09-17
15
16### Changed
17
18- Disable publication on GitHub packages registry on release until authentication issue is fixed.
19
20### Added
21
22- Add `startWorkers` to pool options to whether start the minimum number of workers at pool creation or not.
23- Add `start()` method to pool API to start the minimum number of workers.
24- Add `taskStealing` and `tasksStealingOnPressure` to tasks queue options to whether enable task stealing or not and whether enable tasks stealing on back pressure or not.
25- Continuous internal benchmarking: https://poolifier.github.io/benchmark-results/dev/bench.
26
27## [2.6.44] - 2023-09-08
28
29### Fixed
30
31- Use a dedicated PAT to publish on GitHub packages registry.
32
33### Added
34
35- Publish on GitHub packages registry on release.
36
37### Changed
38
39- Switch from rome to biome: [PR #1128](https://github.com/poolifier/poolifier/pull/1128).
40
41## [2.6.43] - 2023-09-08
42
43### Added
44
45- Publish on GitHub packages registry on release.
46
47### Changed
48
49- Switch from rome to biome: [PR #1128](https://github.com/poolifier/poolifier/pull/1128).
50
51## [2.6.42] - 2023-09-06
52
53### Changed
54
55- Optimize hot code paths implementation: avoid unnecessary branching, add and use optimized helpers (min, max), use reduce() array helper, ...
56
57## [2.6.41] - 2023-09-03
58
59### Changed
60
61- Optimize worker choice strategies implementation.
62
63## [2.6.40] - 2023-09-01
64
65### Fixed
66
67- Do not pre-choose in WRR worker choice strategy to avoid bias.
68- Avoid array out of bound in worker choice strategies after worker node removal.
69
70## [2.6.39] - 2023-08-30
71
72### Fixed
73
74- Fix race condition in worker choice strategies at worker node info querying while not yet initialized.
75
76## [2.6.38] - 2023-08-30
77
78### Added
79
80- Bundle typescript types declaration into one file.
81
82### Changed
83
84- Improve interleaved weighted round robin worker choice strategy implementation.
85
86## [2.6.37] - 2023-08-28
87
88### Fixed
89
90- Ensure unused worker usage statistics are deleted at runtime.
91
92### Changed
93
94- Rename worker choice strategy options `choiceRetries` to `retries`.
95- Avoid unnecessary branching in worker choice strategies.
96
97## [2.6.36] - 2023-08-27
98
99### Fixed
100
101- Fix pool `execute()` arguments check.
102
103### Changed
104
105- Make continuous tasks stealing algorithm less aggressive.
106- Fine tune tasks stealing algorithm under back pressure.
107
108## [2.6.35] - 2023-08-25
109
110### Fixed
111
112- Don't account worker usage statistics for tasks that have failed.
113- Fix pool information runtime and wait time median computation.
114
115### Changed
116
117- Update simple moving average implementation to use a circular buffer.
118- Update simple moving median implementation to use a circular buffer.
119- Account for stolen tasks in worker usage statistics and pool information.
120
121### Added
122
123- Continuous tasks stealing algorithm.
124
125## [2.6.34] - 2023-08-24
126
127### Fixes
128
129- Avoid cascading tasks stealing under back pressure.
130
131### Changed
132
133- Add fastpath to queued tasks rescheduling.
134
135## [2.6.33] - 2023-08-24
136
137### Fixed
138
139- Fix queued tasks rescheduling.
140
141### Changed
142
143- Rename tasks queue options `queueMaxSize` to `size`.
144
145### Added
146
147- Task stealing scheduling algorithm if tasks queueing is enabled.
148
149## [2.6.32] - 2023-08-23
150
151### Fixed
152
153- Ensure no task can be executed when the pool is destroyed.
154
155### Added
156
157- Add `queueMaxSize` option to tasks queue options.
158- Add O(1) deque implementation implemented with doubly linked list and use it for tasks queueing.
159- Add tasks stealing algorithm when a worker node queue is back pressured if tasks queueing is enabled.
160
161## [2.6.31] - 2023-08-20
162
163### Fixed
164
165- Fix worker choice strategy retries mechanism in some edge cases.
166
167### Changed
168
169- Make orthogonal worker choice strategies tasks distribution and created dynamic worker usage.
170- Remove the experimental status of the `LEAST_ELU` worker choice strategy.
171
172## [2.6.30] - 2023-08-19
173
174### Fixed
175
176- Ensure pool event `backPressure` is emitted.
177- Ensure pool event `full` is emitted only once.
178- Ensure worker node cannot be instantiated without proper arguments.
179
180## [2.6.29] - 2023-08-18
181
182### Fixed
183
184- Fix race condition between ready and task functions worker message handling at startup.
185- Fix duplicate task function worker usage statistics computation per task function.
186- Update task function worker usage statistics if and only if there's at least two different task functions.
187- Fix race condition at task function worker usage executing task computation leading to negative value.
188
189### Added
190
191- 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).
192- Use back pressure detection in worker choice strategies.
193- Add worker choice strategies retries mechanism if no worker is eligible.
194
195## [2.6.28] - 2023-08-16
196
197### Fixed
198
199- Ensure pool workers are properly initialized.
200
201### Added
202
203- HTTP server pool examples: express-cluster, express-hybrid.
204
205### Changed
206
207- Remove now useless branching in worker hot code path.
208
209## [2.6.27] - 2023-08-15
210
211### Fixed
212
213- Add `KillHandler` type definition to exported types.
214
215### Added
216
217- Add `destroy` event to pool API.
218
219## [2.6.26] - 2023-08-15
220
221### Added
222
223- Add kill handler to worker options allowing to execute custom code when worker is killed.
224- Add `listTaskFunctions()` method to pool API.
225- SMTP client pool example: nodemailer.
226
227## [2.6.25] - 2023-08-13
228
229### Added
230
231- HTTP server pool examples: fastify-cluster, fastify-hybrid.
232- WebSocket server pool examples: ws-cluster, ws-hybrid.
233
234## [2.6.24] - 2023-08-12
235
236### Added
237
238- Add array of transferable objects to the `execute()` method arguments.
239- WebSocket server pool examples: ws-worker_threads.
240
241## [2.6.23] - 2023-08-11
242
243### Fixed
244
245- 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.
246
247### Added
248
249- HTTP client pool examples: fetch, node-fetch and axios with multiple task functions.
250- HTTP server pool examples: express-worker_threads, fastify-worker_threads.
251
252## [2.6.22] - 2023-08-10
253
254### Fixed
255
256- Add missing `types` field to package.json `exports`.
257
258### Changed
259
260- Structure markdown documentation (PR #811).
261
262## [2.6.21] - 2023-08-03
263
264### Changed
265
266- Improve code documentation.
267- Code refactoring and cleanup for better maintainability and readability.
268
269## [2.6.20] - 2023-07-21
270
271### Fixed
272
273- Fix queued tasks redistribution on error task execution starvation.
274- Ensure tasks queueing per worker condition is untangled from the pool busyness semantic.
275
276### Changed
277
278- Drastically reduce lookups by worker in the worker nodes.
279
280## [2.6.19] - 2023-07-20
281
282### Added
283
284- Dedicated internal communication channel for worker_threads pools.
285
286## [2.6.18] - 2023-07-19
287
288### Changed
289
290- Code refactoring and cleanup for better maintainability and readability. Bundle size is a bit smaller.
291
292## [2.6.17] - 2023-07-16
293
294### Added
295
296- Add `listTaskFunctions()` method to worker API.
297
298## [2.6.16] - 2023-07-12
299
300### Fixed
301
302- Fix pool startup detection.
303- Fix worker task functions handling.
304
305## [2.6.15] - 2023-07-11
306
307### Added
308
309- Take into account worker node readiness in worker choice strategies.
310
311## [2.6.14] - 2023-07-10
312
313### Fixed
314
315- Fix task function statistics tracking.
316
317## [2.6.13] - 2023-07-10
318
319### Added
320
321- Add per task function statistics tracking.
322- Add public methods to manipulate the worker task functions at runtime.
323
324## [2.6.12] - 2023-07-09
325
326### Fixed
327
328- Workaround import issue with `node:os` module in node 16.x.x.
329
330## [2.6.11] - 2023-07-09
331
332### Fixed
333
334- Fix pool readiness semantic.
335
336## [2.6.10] - 2023-07-08
337
338### Fixed
339
340- Ensure workers are not recreated on error at pool startup.
341
342### Added
343
344- Add `ready` and `strategy` fields to pool information.
345- Add pool event `ready` to notify when the number of workers created in the pool has reached the maximum size expected and are ready.
346- Add dynamic pool sizing checks.
347
348## [2.6.9] - 2023-07-07
349
350### Fixed
351
352- Recreate the right worker type on uncaught exception.
353
354### Added
355
356- Add minimum and maximum to internal measurement statistics.
357- Add `runTime` and `waitTime` to pool information.
358- Check worker inactive time only on dynamic worker.
359
360## [2.6.8] - 2023-07-03
361
362### Fixed
363
364- Brown paper bag release to fix version handling in pool information.
365
366## [2.6.7] - 2023-07-03
367
368### Fixed
369
370- Ensure worker queued tasks at error are reassigned to other pool workers.
371
372### Added
373
374- Add pool `utilization` ratio to pool information.
375- Add `version` to pool information.
376- Add worker information to worker nodes.
377
378## [2.6.6] - 2023-07-01
379
380### Added
381
382- Add safe helper `availableParallelism()` to help sizing the pool.
383
384### Fixed
385
386- Ensure message handler is only registered in worker.
387
388## [2.6.5] - 2023-06-27
389
390### Known issues
391
392- Cluster pools tasks execution are not working by using ESM files extension: https://github.com/poolifier/poolifier/issues/782
393
394### Fixed
395
396- Artificial version bump to 2.6.5 to workaround publication issue.
397- Ensure cluster pool `destroy()` gracefully shutdowns worker's server.
398- Ensure pool event is emitted before task error promise rejection.
399- Fix queued tasks count computation.
400
401### Removed
402
403- Remove unneeded worker_threads worker `MessageChannel` internal usage for IPC.
404
405## [2.6.4] - 2023-06-27
406
407### Known issues
408
409- Cluster pools tasks execution are not working by using ESM files extension: https://github.com/poolifier/poolifier/issues/782
410
411### Fixed
412
413- Ensure cluster pool `destroy()` gracefully shutdowns worker's server.
414- Ensure pool event is emitted before task error promise rejection.
415- Fix queued tasks count computation.
416
417### Removed
418
419- Remove unneeded worker_threads worker `MessageChannel` internal usage for IPC.
420
421## [2.6.3] - 2023-06-19
422
423### Fixed
424
425- Ensure no tasks are queued when trying to soft kill a dynamic worker.
426- Update strategies internals after statistics computation.
427
428### Changed
429
430- Optimize O(1) queue implementation.
431
432## [2.6.2] - 2023-06-12
433
434### Fixed
435
436- Fix new worker use after creation in dynamic pool given the current worker choice strategy.
437
438## [2.6.1] - 2023-06-10
439
440### Added
441
442- Add worker choice strategy documentation: [README.md](./docs/worker-choice-strategies.md).
443
444### Fixed
445
446- Fix average statistics computation: ensure failed tasks are not accounted.
447
448## [2.6.0] - 2023-06-09
449
450### Added
451
452- Add `LEAST_ELU` worker choice strategy (experimental).
453- Add tasks ELU instead of runtime support to `FAIR_SHARE` worker choice strategy.
454
455### Changed
456
457- Refactor pool worker node usage internals.
458- Breaking change: refactor worker choice strategy statistics requirements: the syntax of the worker choice strategy options has changed.
459- Breaking change: pool information `info` property object fields have been renamed.
460
461### Fixed
462
463- Fix wait time accounting.
464- Ensure worker choice strategy `LEAST_BUSY` accounts also tasks wait time.
465- Ensure worker choice strategy `LEAST_USED` accounts also queued tasks.
466
467## [2.5.4] - 2023-06-07
468
469### Added
470
471- Add Event Loop Utilization (ELU) statistics to worker tasks usage.
472
473### Changed
474
475- Compute statistics at the worker level only if needed.
476- Add `worker_threads` options to thread pool options.
477
478### Fixed
479
480- Make the `LEAST_BUSY` strategy only relies on task runtime.
481
482## [2.5.3] - 2023-06-04
483
484### Changed
485
486- Refine pool information content.
487- Limit pool internals public exposure.
488
489## [2.5.2] - 2023-06-02
490
491### Added
492
493- Add `taskError` pool event for task execution error.
494- Add pool information `info` property to pool.
495- Emit pool information on `busy` and `full` pool events.
496
497## [2.5.1] - 2023-06-01
498
499### Added
500
501- Add pool option `restartWorkerOnError` to restart worker on uncaught error. Default to `true`.
502- Add `error` pool event for uncaught worker error.
503
504## [2.5.0] - 2023-05-31
505
506### Added
507
508- Switch pool event emitter to `EventEmitterAsyncResource`.
509- Add tasks wait time accounting in per worker tasks usage.
510- Add interleaved weighted round robin `INTERLEAVED_WEIGHTED_ROUND_ROBIN` worker choice strategy (experimental).
511
512### Changed
513
514- Renamed worker choice strategy `LESS_BUSY` to `LEAST_BUSY` and `LESS_USED` to `LEAST_USED`.
515
516## [2.4.14] - 2023-05-09
517
518### Fixed
519
520- Ensure no undefined task runtime can land in the tasks history.
521- Fix median computation implementation once again.
522
523### Added
524
525- Unit tests for median and queue implementations.
526
527## [2.4.13] - 2023-05-08
528
529### Fixed
530
531- Fix worker choice strategy options validation.
532- Fix fair share worker choice strategy internals update: ensure virtual task end timestamp is computed at task submission.
533
534## [2.4.12] - 2023-05-06
535
536### Added
537
538- Support multiple task functions per worker.
539- Add custom worker weights support to worker choice strategies options.
540
541### Changed
542
543- Use O(1) queue implementation for tasks queueing.
544
545### Fixed
546
547- Fix median computation implementation.
548- Fix fair share worker choice strategy internals update.
549
550## [2.4.11] - 2023-04-23
551
552### Changed
553
554- Optimize free worker finding in worker choice strategies.
555
556## [2.4.10] - 2023-04-15
557
558### Fixed
559
560- Fix typescript type definition for task function: ensure the input data is optional.
561- Fix typescript type definition for pool execute(): ensure the input data is optional.
562
563## [2.4.9] - 2023-04-15
564
565### Added
566
567- Add tasks queue enablement runtime setter to pool.
568- Add tasks queue options runtime setter to pool.
569- Add worker choice strategy options runtime setter to pool.
570
571### Changed
572
573- Remove the tasks queuing experimental status.
574
575### Fixed
576
577- Fix task function type definition and validation.
578- Fix worker choice strategy options handling.
579
580## [2.4.8] - 2023-04-12
581
582### Fixed
583
584- Fix message between main worker and worker type definition for tasks.
585- Fix code documentation.
586
587## [2.4.7] - 2023-04-11
588
589### Added
590
591- Add worker tasks queue options to pool options.
592
593### Fixed
594
595- Fix missing documentation.
596
597## [2.4.6] - 2023-04-10
598
599### Fixed
600
601- Ensure one task at a time is executed per worker with tasks queueing enabled.
602- Properly count worker executing tasks with tasks queueing enabled.
603
604## [2.4.5] - 2023-04-09
605
606### Added
607
608- Use monotonic high resolution timer for worker tasks runtime.
609- Add worker tasks median runtime to statistics.
610- Add worker tasks queue (experimental).
611
612## [2.4.4] - 2023-04-07
613
614### Added
615
616- Add `PoolEvents` enumeration and `PoolEvent` type.
617
618### Fixed
619
620- Destroy worker only on alive check.
621
622## [2.4.3] - 2023-04-07
623
624### Fixed
625
626- Fix typedoc generation with inheritance.
627
628## [2.4.2] - 2023-04-06
629
630### Added
631
632- Add `full` event to dynamic pool.
633- Keep worker choice strategy in memory for conditional reuse.
634
635### Fixed
636
637- Fix possible negative worker key at worker removal in worker choice strategies.
638
639## [2.4.1] - 2023-04-05
640
641### Changed
642
643- Optimize worker choice strategy for dynamic pool.
644
645### Fixed
646
647- Ensure dynamic pool does not alter worker choice strategy expected behavior.
648
649## [2.4.0] - 2023-04-04
650
651### Added
652
653- Add `LESS_BUSY` worker choice strategy.
654
655### Changed
656
657- Optimize worker storage in pool.
658- Optimize worker alive status check.
659- BREAKING CHANGE: Rename worker choice strategy `LESS_RECENTLY_USED` to `LESS_USED`.
660- Optimize `LESS_USED` worker choice strategy.
661- Update benchmark versus external threads pools.
662- Optimize tasks usage statistics requirements for worker choice strategy.
663
664### Fixed
665
666- Ensure trimmable characters are checked at pool initialization.
667- Fix message id integer overflow.
668- Fix pool worker removal in worker choice strategy internals.
669- Fix package publication with pnpm.
670
671## [2.4.0-3] - 2023-04-04
672
673### Added
674
675- Add `LESS_BUSY` worker choice strategy.
676
677### Changed
678
679- Optimize worker storage in pool.
680- Optimize worker alive status check.
681- BREAKING CHANGE: Rename worker choice strategy `LESS_RECENTLY_USED` to `LESS_USED`.
682- Optimize `LESS_USED` worker choice strategy.
683- Update benchmark versus external threads pools.
684
685### Fixed
686
687- Ensure trimmable characters are checked at pool initialization.
688- Fix message id integer overflow.
689- Fix pool worker removal in worker choice strategy internals.
690- Fix package publication with pnpm.
691
692## [2.4.0-2] - 2023-04-03
693
694### Added
695
696- Add `LESS_BUSY` worker choice strategy.
697
698### Changed
699
700- Optimize worker storage in pool.
701- Optimize worker alive status check.
702- BREAKING CHANGE: Rename worker choice strategy `LESS_RECENTLY_USED` to `LESS_USED`.
703- Optimize `LESS_USED` worker choice strategy.
704
705### Fixed
706
707- Ensure trimmable characters are checked at pool initialization.
708- Fix message id integer overflow.
709- Fix pool worker removal in worker choice strategy internals.
710- Fix package publication with pnpm.
711
712## [2.4.0-1] - 2023-04-03
713
714### Added
715
716- Add `LESS_BUSY` worker choice strategy.
717
718### Changed
719
720- Optimize worker storage in pool.
721- Optimize worker alive status check.
722- BREAKING CHANGE: Rename worker choice strategy `LESS_RECENTLY_USED` to `LESS_USED`.
723- Optimize `LESS_USED` worker choice strategy.
724
725### Fixed
726
727- Ensure trimmable characters are checked at pool initialization.
728- Fix message id integer overflow.
729- Fix pool worker removal in worker choice strategy internals.
730
731## [2.4.0-0] - 2023-04-03
732
733### Added
734
735- Add `LESS_BUSY` worker choice strategy.
736
737### Changed
738
739- Optimize worker storage in pool.
740- Optimize worker alive status check.
741- BREAKING CHANGE: Rename worker choice strategy `LESS_RECENTLY_USED` to `LESS_USED`.
742- Optimize `LESS_USED` worker choice strategy.
743
744### Fixed
745
746- Ensure trimmable characters are checked at pool initialization.
747- Fix message id integer overflow.
748- Fix pool worker removal in worker choice strategy internals.
749
750## [2.3.10] - 2023-03-18
751
752### Fixed
753
754- Fix package.json `exports` syntax for ESM and CommonJS.
755
756### Changed
757
758- Permit SemVer pre-release publication.
759
760## [2.3.10-2] - 2023-03-18
761
762### Fixed
763
764- Fix package.json `exports` syntax for ESM and CommonJS.
765
766## [2.3.10-1] - 2023-03-18
767
768### Changed
769
770- Permit SemVer pre-release publication.
771
772## [2.3.10-0] - 2023-03-18
773
774### Fixed
775
776- Fix package.json `exports` syntax for ESM and CommonJS.
777
778## [2.3.9] - 2023-03-18
779
780### Changed
781
782- Introduce ESM module support along with CommonJS one.
783
784### Fixed
785
786- Fix brown paper bag bug referencing the same object literal.
787
788## [2.3.8] - 2023-03-18
789
790### Changed
791
792- Switch internal benchmarking code to benny.
793- Switch to TypeScript 5.x.x.
794- Switch rollup bundler plugins to core ones.
795- Switch to TSDoc syntax.
796- Enforce conventional commits.
797
798### Fixed
799
800- Fix random integer generator.
801- Fix worker choice strategy pool type identification at initialization.
802
803## [2.3.7] - 2022-10-23
804
805### Changed
806
807- Switch to open collective FOSS project funding platform.
808- Switch to ts-standard linter configuration on TypeScript code.
809
810### Fixed
811
812- Fixed missing async on pool execute method.
813- Fixed typing in TypeScript example.
814- Fixed types in unit tests.
815
816## [2.3.6] - 2022-10-22
817
818### Changed
819
820- Cleanup pool attributes and methods.
821- Refine error types thrown.
822
823### Fixed
824
825- Fix continuous integration build on windows.
826- Fix code coverage reporting by using c8 instead of nyc.
827
828## [2.3.5] - 2022-10-21
829
830### Changed
831
832- Improve benchmarks: add IO intensive task workload, add task size option, integrate code into linter.
833- Optimize tasks usage lookup implementation.
834
835### Fixed
836
837- Fix missed pool event emitter type export.
838- Fix typedoc documentation generation.
839
840## [2.3.4] - 2022-10-17
841
842### Added
843
844- Fully automate release process with release-it.
845
846### Changed
847
848- Optimize fair share task scheduling algorithm implementation.
849- Update benchmark versus external pools results with latest version.
850
851## [2.3.3] - 2022-10-15
852
853### Added
854
855- Add support for [cluster settings](https://nodejs.org/api/cluster.html#cluster_cluster_settings) in cluster pool options.
856
857## [2.3.2] - 2022-10-14
858
859### Changed
860
861- Optimize fair share worker selection strategy implementation.
862
863### Fixed
864
865- Fix WRR worker selection strategy: ensure the condition triggering the round robin can be fulfilled.
866
867## [2.3.1] - 2022-10-13
868
869### Added
870
871- Pool worker choice strategies:
872 - `WorkerChoiceStrategies.WEIGHTED_ROUND_ROBIN` strategy based on weighted round robin scheduling algorithm using tasks execution time for now.
873 - `WorkerChoiceStrategies.FAIR_SHARE` strategy based on fair share scheduling algorithm using tasks execution time for now.
874
875## [2.2.2] - 2022-10-09
876
877### Fixed
878
879- Fixed `README.md` file.
880
881## [2.2.1] - 2022-10-08
882
883### Added
884
885- Dynamic worker choice strategy change at runtime.
886
887## [2.2.0] - 2022-01-05
888
889### Breaking Changes
890
891- Support only Node.js version 16.x.x for cluster pool: upstream cluster API have changed on that version.
892
893## [2.1.0] - 2021-08-29
894
895### Added
896
897- Add an optional pool option `messageHandler` to `PoolOptions<Worker>` for registering a message handler callback on each worker.
898
899### Breaking Changes
900
901- `AbstractWorker` class `maxInactiveTime`, `killBehavior` and `async` attributes have been removed in favour of the same ones in the worker options `opts` public attribute.
902- `AbstractWorker` class `lastTask` attribute have been renamed to `lastTaskTimestamp`.
903- `AbstractWorker` class `interval` attribute have been renamed to `aliveInterval`.
904- `AbstractWorker` class cannot be instantiated without specifying the `mainWorker` argument referencing the main worker.
905
906## [2.0.2] - 2021-05-12
907
908### Bug fixes
909
910- Fix `busy` event emission on fixed pool type
911
912## [2.0.1] - 2021-03-16
913
914### Bug fixes
915
916- Check if pool options are properly set.
917- `busy` event is emitted on all pool types.
918
919## [2.0.0] - 2021-03-01
920
921### Bug fixes
922
923- Now a thread/process by default is not deleted when the task submitted take more time than maxInactiveTime configured (issue #70).
924
925### Breaking Changes
926
927- `FullPool` event is now renamed to `busy`.
928- `maxInactiveTime` on `ThreadWorker` default behavior is now changed, if you want to keep the old behavior set `killBehavior` to `KillBehaviors.HARD`.
929 _Find more details on our JSDoc._
930
931- `maxTasks` option on `FixedThreadPool` and `DynamicThreadPool` is now removed since is no more needed.
932
933- We changed some internal structures, but you shouldn't be too affected by them as these are internal changes.
934
935### Pool options types declaration merge
936
937`FixedThreadPoolOptions` and `DynamicThreadPoolOptions` type declarations have been merged to `PoolOptions<Worker>`.
938
939#### New `export` strategy
940
941```js
942// Before
943const DynamicThreadPool = require('poolifier/lib/dynamic')
944// After
945const { DynamicThreadPool } = require('poolifier/lib/dynamic')
946```
947
948But you should always prefer just using
949
950```js
951const { DynamicThreadPool } = require('poolifier')
952```
953
954#### New type definitions for input data and response
955
956For cluster worker and worker-thread pools, you can now only send and receive structured-cloneable data.
957_This is not a limitation by poolifier but Node.js._
958
959#### Public property replacements
960
961`numWorkers` property is now `numberOfWorkers`
962
963#### Internal (protected) properties and methods renaming
964
965These properties are not intended for end users
966
967- `id` => `nextMessageId`
968
969These methods are not intended for end users
970
971- `_chooseWorker` => `chooseWorker`
972- `_newWorker` => `createWorker`
973- `_execute` => `internalExecute`
974- `_chooseWorker` => `chooseWorker`
975- `_checkAlive` => `checkAlive`
976- `_run` => `run`
977- `_runAsync` => `runAsync`
978
979## [1.1.0] - 2020-05-21
980
981### Added
982
983- ThreadWorker support async functions as option
984- Various external library patches
985
986## [1.0.0] - 2020-01-24
987
988### Added
989
990- FixedThreadPool implementation
991- DynamicThreadPool implementation
992- WorkerThread implementation to improve developer experience