Skip to content

Releases: MostafaSensei106/FP-Growth

v2.0.1

03 Jan 08:24
5683761

Choose a tag to compare

What's Changed

  • BREAKING CHANGE: The core mining API has been redesigned to support true memory-efficient streaming. The FPGrowth.mine method signature has changed from mine(Iterable<List<T>>) to mine(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. The StreamProcessor class 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 the FPGrowth class. This change requires importing package:fp_growth/fp_growth_io.dart for file-based operations.
  • feat(api): This refactoring enhances API consistency and encapsulation. Users now configure an FPGrowth instance once and call the desired mining method (mineFromList, mineFromCsv, or mine).
  • feat(api): Introduced the fp_growth_io.dart library 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 new mineFromCsv() 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

Full Changelog: v2.0.0...v2.0.1

v1.0.3

02 Jan 20:34
2e19462

Choose a tag to compare

What's Changed

  • BREAKING CHANGE: The core mining API has been redesigned to support true memory-efficient streaming. The FPGrowth.mine method signature has changed from mine(Iterable<List<T>>) to mine(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. The StreamProcessor class 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 the FPGrowth class. This change requires importing package:fp_growth/fp_growth_io.dart for file-based operations.
  • feat(api): This refactoring enhances API consistency and encapsulation. Users now configure an FPGrowth instance once and call the desired mining method (mineFromList, mineFromCsv, or mine).
  • feat(api): Introduced the fp_growth_io.dart library 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 new mineFromCsv() API.
  • chore(docs): Updated documentation to reflect the new architectural changes and convenience APIs.by @MostafaSensei106 in #1

New Contributors

Full Changelog: v1.0.2...v1.0.3

v1.0.2

14 Dec 21:15

Choose a tag to compare

  • 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

14 Nov 11:52

Choose a tag to compare