@@ -24,53 +24,61 @@ Given a version number `MAJOR.MINOR.PATCH`, we increment the:
24
24
25
25
### Fixed
26
26
27
- - (** BREAKING CHANGE** ) Improve stack order evaluation performance.
28
- This affects commands that use the stack order, i.e. ` run ` , ` run script ` , ` list --run-order ` .
29
- As a consequence, the evaluation order of _ unrelated_ stacks may change.
27
+ - ** BREAKING CHANGE** Massively improve stack order evaluation performance.
30
28
31
- Example 1:
32
- /stack1
33
- /stack1/a
34
- /stack2
35
- /stack2/a
29
+ This affects and improves commands that use the stack order, i.e. ` run ` , ` run script ` , ` list --run-order ` .
30
+ As a consequence, the evaluation order of _ unrelated_ stacks may change.
36
31
37
- Sub-stacks ` a ` must be executed after their parent stacks, but ` /stack1 ` and ` /stack2 ` are unrelated.
32
+ - Example 1:
33
+ Nested stacks ` a ` must be executed after their parent stacks, but ` /stack1 ` and ` /stack2 ` are independent.
38
34
39
35
Old run order:
36
+ ```
40
37
/stack1
41
38
/stack1/a
42
39
/stack2
43
40
/stack2/a
41
+ ```
44
42
45
43
New run order:
44
+ ```
46
45
/stack1
47
46
/stack2
48
47
/stack1/a
49
48
/stack2/a
49
+ ```
50
50
51
- Example 2:
52
- /stack1
53
- /stack2 (after=[ stack1] )
54
- /stack3
55
-
56
- ` stack2 ` must be executed after ` stack1 ` , but ` stack3 ` is unrelated.
51
+ - Example 2:
52
+ `stack2` must be executed after `stack1`, but `stack1` and `stack3` are independent in the follwing configuration:
53
+ ```
54
+ /stack1
55
+ /stack2 (after=[stack1])
56
+ /stack3
57
+ ```
57
58
58
59
Old run order:
60
+ ```
59
61
/stack1
60
62
/stack2
61
63
/stack3
64
+ ```
62
65
63
66
New run order:
67
+ ```
64
68
/stack1
65
69
/stack3
66
70
/stack2
71
+ ```
67
72
68
- The new rule first runs stacks that have no dependencies in ` group 1 ` ,
69
- then those in ` group 2 ` that depend on stacks in ` group 1 ` ,
70
- then those in ` group 3 ` that depend on stacks in ` group 1 ` and ` group 2 ` , and so on.
71
- Stacks in each group are ordered lexicographically.
73
+ The new rule recursively aligns stacks that are independent into groups.
74
+ - The first group contains all initially independent stacks.
75
+ - The second group contains all stacks that just depended on stacks in the first group.
76
+ - The third group contains all stacks that just depended on stacks in both previous groups.
77
+ - The fourth group and following groups continue in the same way.
78
+
79
+ Stacks in each group are ordered lexicographically and returned as the order of execution when running sequentially.
72
80
73
- The run order when using the ` --parallel ` flag is not affected by this.
81
+ The run order when using the `--parallel` flag is not affected by this change .
74
82
75
83
## v0.13.3
76
84
0 commit comments