💥 Breaking
- Tasks that depend (via
deps
) on other tasks from arbitrary projects (the parent project doesn't
implicitly or explicitly depend on the other project) will now automatically mark that other
project as a "peer" dependency.
🎉 Release
- Rewrote the dependency graph from the ground-up:
- Now known as the action graph.
- All actions now depend on the
SyncWorkspace
action, instead of this action running arbitrarily. - Cleaned up dependency chains between actions, greatly reducing the number of nodes in the graph.
- Renamed
RunTarget
toRunTask
, including interactive and persistent variants.
- Updated the action graph to process using a topological queue, which executes actions on-demand in
the thread pool when they are ready (dependencies have been met). Previously, we would sort
topologically into batches, which worked, but resulted in many threads uselessly waiting for an
action to run, which was blocked waiting for the current batch to complete.- For large graphs, this should result in a significant performance improvement.
- Persistent tasks will still be ran as a batch, but since it's the last operation, it's fine.
- Released a new GitHub action,
moonrepo/setup-toolchain
, that replaces bothsetup-moon-action
andsetup-proto
.
🚀 Updates
- Added a
moon action-graph
command. - Added a
--dependents
argument tomoon action-graph
. - Added the ability to skip non-
RunTask
actions using environment variables. - Deprecated the
moon dep-graph
command.
🐞 Fixes
- Fixed an issue where task dependents (via
moon ci
ormoon run --dependents
) wouldn't always
locate all downstream tasks.
⚙️ Internal
- Added in-memory caching to project graph file system lookup operations.
- Updated Rust to v1.72.