mirror of
https://github.com/fluencelabs/aqua.git
synced 2024-12-04 22:50:18 +00:00
22778914ca
* Topology optimization for Folds * cache RawCursor's parent for better performance * Tests fixed * wip * wip * Use the new Topology to find paths * Compile bug fixed * Old tests works * One more fixed test * Move before seq next * One more fixed test * Bugfix * Disabled debug output * maybe fix? * maybe fix? * Topology wip * Maybe fix * Maybe fix * Fold optimization * Root topology * Respect forceExit in endsOn * better caching * better caching * Root afterOn = const * XorGroup endsOn should break * no EndsOn for Root * Maybe better? * Uncycling * Eval * Respect ParTag.Detach * Detach test * Detach test failing * Detach test fixed * Go to relay via relay * Fixes #380 * Increment Aqua version to 0.5.2 * Add image to transform readme, update dependencies * Review fixes * Updated Scala version in the release flow
2.7 KiB
2.7 KiB
Topology transformations
Beware cycles!
- Before: where execution happened before entering into this tag
- Begin: where execution is expected to be in the beginning of this tag
Usually tags handle their beforePaths: inject pathway from location Before to location Begin, to ensure that execution can get there.
- End: where execution is expected to end when all the children of the tag are executed
- After: where execution flow should go after this tag is handled
Usually Before == previous End or parent's Begin, and After == next Begin or parent's After.
- Finally: either After, if tag takes care of getting from its internal scope to the outer scope, or End if it doesn't
Usually tags do not care about the afterPath and inject nothing. But in some cases this path is super necessary, e.g. returning from the Par branch must be done within that Par branch, as doing it later is too late.
Tag | Before | Begin | End | After | Finally | Force Exit |
---|---|---|---|---|---|---|
Default | parent.begin OR path | path | <- begin | <- ends | force ? <- after: <- ends | false |
seq | - | - | lastChild.finally | - | - | - |
seq/* | prev.finally OR default | - | - | next.begin OR parent.after | - | - |
xor/*:0 | - | - | - | parent.after | - | hasExecLater |
xor/*:1 | prev.ends | - | - | parent.after | - | hasExecLater |
xor | - | - | lastChild.finally | - | - | - |
par/* | - | - | <- before | parent.after | - | exportsUsedLater |
for | - | fc.begins(until i) | - | - | - | - |
noExec | - | - | <- begin | - | - | - |