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