Skip to content

v0.18.0 - Dependency Graph-based Phase Execution

Pre-release
Pre-release
Compare
Choose a tag to compare
@douira douira released this 05 Mar 03:16
· 733 commits to main since this release
eb9d90e
  • Added dependency graph-based phase execution. This means instead of putting phases into levels, they can now be added as nodes in a dependency graph and the ExecutionPlanner will compute a plan made up of as few as possible execution levels so that all dependencies are satisfied and all phases are executed.
  • Abstracted some functionality, mainly init and state reset, of phases and transformations into LifecycleUser
  • Changed Transformation to track the dependencies of lifecycle users enclosed in nodes
  • Renamed PhaseCollector to ExecutionPlanner and changed how transformations are added to it
  • Introduced the internal data structure Node that transformations use to track dependencies between lifecycle users
  • Transformations and phases can be part of other transformations. In fact, the execution planner simply contains a root transformation to which all other transformations and phases are added.
  • Added lots of tests for Transformation and ExecutionPlanner
  • Updated WrapIdentifier and subclasses to use the new APIs
  • Added a utility method for generating simple instances to RunPhase

Full Changelog: v0.17.2...v0.18.0