nested tasks: tasks that are evaluated at render time, not execution time, and so (a) do not appear in the output graph explicitly and (b) consist solely of tasks/nested_tasks being mixed together, and returned.
input parameters: we spot and capture global variables that we see being used by tasks, so that they are turned into input parameters for the workflow.
typehinting: of tasks is now retained (after decoration) as it was declared, so that return values of lazy-evaluated functions will be treated as their original types, and the type-checker should validate code as if they were the original imperative functions.
Why has this changed?
This allows us to create reusable, composable workflows. This provides enough features to construct useful complex workflows.
How to review?
Try the new examples in workflows.md and experiment with rewiring them.
What has changed?
Mainly two new constructs:
Why has this changed?
This allows us to create reusable, composable workflows. This provides enough features to construct useful complex workflows.
How to review?
Try the new examples in
workflows.md
and experiment with rewiring them.