Releases: MostafaSensei106/FP-Growth
Releases · MostafaSensei106/FP-Growth
v2.0.1
What's Changed
- BREAKING CHANGE: The core mining API has been redesigned to support true memory-efficient streaming. The
FPGrowth.minemethod signature has changed frommine(Iterable<List<T>>)tomine(Stream<List<T>> Function() streamProvider). This requires users to pass a function that provides a function that provides a new transaction stream for each of the algorithm's two passes. TheStreamProcessorclass has been removed. See the README for updated usage. - Major Performance & Memory Refactoring: Overhauled the core architecture to handle massive datasets efficiently.
- feat(api): Added
FPGrowth.mineFromList()convenience method for easy processing of in-memory transaction lists. - refactor(core): Replaced in-memory processing with a two-pass streaming model, drastically reducing memory consumption by accepting a stream provider.
- feat(api): Added a new extension method
mineFromCsv()on theFPGrowthclass. This change requires importingpackage:fp_growth/fp_growth_io.dartfor file-based operations. - feat(api): This refactoring enhances API consistency and encapsulation. Users now configure an
FPGrowthinstance once and call the desired mining method (mineFromList,mineFromCsv, ormine). - feat(api): Introduced the
fp_growth_io.dartlibrary to cleanly separate platform-specific file I/O functionality from the core web-compatible library. - refactor(core): Implemented a weighted FP-Tree for conditional tree generation, avoiding the costly duplication of transaction paths in memory.
- refactor(rules): Replaced the brute-force subset generation with an efficient Apriori-style algorithm for creating association rules, significantly speeding up the process for large itemsets.
- refactor(core): Implemented a fixed-size Isolate Pool for parallel mining, eliminating the overhead of spawning new isolates for each task and enabling true, efficient parallelism.
- chore(tests): Updated the entire test suite to align with the new stream-provider API and ensure correctness after the major refactoring.
- chore(docs): Updated the
README.md, examples, and CLI tool to reflect the newmineFromCsv()API. - chore(docs): Updated documentation to reflect the new architectural changes and convenience APIs.
- refactor(package): Update version to 2.0.0 and standardize test formatting
- test: Add unit tests for core, rules, I/O, and utilities
Add extensive unit tests for core FP-Growth helpers, generic type handling, I/O operations (CSV), association rules, exporter, and logger. Relocate the API benchmark to bin/. - by @MostafaSensei106 in #1
Full Changelog: v1.0.3...v2.0.0
- docs(conduct): Add specific reporting contact methods by @MostafaSensei106 in #3
- docs(changelog): Add entry for 2.0.1 version bump by @MostafaSensei106 in #4
Full Changelog: v2.0.0...v2.0.1
v1.0.3
What's Changed
- BREAKING CHANGE: The core mining API has been redesigned to support true memory-efficient streaming. The
FPGrowth.minemethod signature has changed frommine(Iterable<List<T>>)tomine(Stream<List<T>> Function() streamProvider). This requires users to pass a function that provides a function that provides a new transaction stream for each of the algorithm's two passes. TheStreamProcessorclass has been removed. See the README for updated usage. - Major Performance & Memory Refactoring: Overhauled the core architecture to handle massive datasets efficiently.
- feat(api): Added
FPGrowth.mineFromList()convenience method for easy processing of in-memory transaction lists. - refactor(core): Replaced in-memory processing with a two-pass streaming model, drastically reducing memory consumption by accepting a stream provider.
- feat(api): Added a new extension method
mineFromCsv()on theFPGrowthclass. This change requires importingpackage:fp_growth/fp_growth_io.dartfor file-based operations. - feat(api): This refactoring enhances API consistency and encapsulation. Users now configure an
FPGrowthinstance once and call the desired mining method (mineFromList,mineFromCsv, ormine). - feat(api): Introduced the
fp_growth_io.dartlibrary to cleanly separate platform-specific file I/O functionality from the core web-compatible library. - refactor(core): Implemented a weighted FP-Tree for conditional tree generation, avoiding the costly duplication of transaction paths in memory.
- refactor(rules): Replaced the brute-force subset generation with an efficient Apriori-style algorithm for creating association rules, significantly speeding up the process for large itemsets.
- refactor(core): Implemented a fixed-size Isolate Pool for parallel mining, eliminating the overhead of spawning new isolates for each task and enabling true, efficient parallelism.
- chore(tests): Updated the entire test suite to align with the new stream-provider API and ensure correctness after the major refactoring.
- chore(docs): Updated the
README.md, examples, and CLI tool to reflect the newmineFromCsv()API. - chore(docs): Updated documentation to reflect the new architectural changes and convenience APIs.by @MostafaSensei106 in #1
New Contributors
- @MostafaSensei106 made their first contribution in #1
Full Changelog: v1.0.2...v1.0.3
v1.0.2
- test(property): Add property-based tests for input order independence and support monotonicity
- fix(core): Fix determinism issue by enforcing stable sorting for equal-frequency items
- test(stress): Add stress and scale tests (10k, 100k, single large transaction)
- docs(benchmarks): Update performance figures using compiled executables instead of dart run
- docs(readme): Update README with CLI usage and performance benchmarks
- chore(changelog): Add 1.0.2 release notes
Full Changelog: v1.0.1...v1.0.2
v1.0.1
Full Changelog: https://github.com/MostafaSensei106/FP-Growth/commits/v1.0.1