Dynamic Scheduling
summary
Dynamic execution sends every action to remote execution and also runs it locally, then picks the faster result; for a large iOS app clean builds drop from ~1 hour to minutes while incremental stays ~17–20s when working properly. Problems addressed: sandboxing on macOS is too slow for heavy input sets, output locking must delay placing files until downloads finish, cancellations require robust process group handling, and tree-artifact cleanup avoids spurious diffs; two runtime flags gate the new behavior.
AI-written summary · about
chapters (20)
- 0:00Dynamic scheduling intro
- 1:05Basil builds and phases
- 3:33Clean vs incremental builds
- 4:59Static execution problems
- 6:24Dynamic execution benefits
- 7:25Basil execution strategies
- 10:58Dynamic scheduler strategy
- 13:28iOS builds use case
- 15:55Dynamic execution results
- 17:00Scheduler problems
- 18:22Output locking issue
- 21:36Build time regressions
- 22:18Remote path locking fix
- 24:04Remote path delays
- 24:45Preemptive process locking
- 26:08Cancelling local processes
- 28:58Process cleanup challenges
- 30:24Tree artifacts issues
- 33:54Final fixes and challenges
- 34:14Summary and future work
related talks
59mCI Best Practices for iOS & macOS App Development
18mCI experts on Android and iOS dependency management
54mGetting out of quicksand, with DevOps!
41mBuild apps for Billions
34mKeynote
20mScaling up a Super-App
21mStreamlining Android app development and release processes
22mExpo Application Services: Iterate with confidence
