{"action":"created","issue":{"url":"https://api.github.com/repos/cake-build/cake/issues/156","labels_url":"https://api.github.com/repos/cake-build/cake/issues/156/labels{/name}","comments_url":"https://api.github.com/repos/cake-build/cake/issues/156/comments","events_url":"https://api.github.com/repos/cake-build/cake/issues/156/events","html_url":"https://github.com/cake-build/cake/issues/156","id":54585732,"number":156,"title":"Allow parallel execution of tasks","user":{"login":"patriksvensson","id":357872,"avatar_url":"https://avatars.githubusercontent.com/u/357872?v=3","gravatar_id":"","url":"https://api.github.com/users/patriksvensson","html_url":"https://github.com/patriksvensson","followers_url":"https://api.github.com/users/patriksvensson/followers","following_url":"https://api.github.com/users/patriksvensson/following{/other_user}","gists_url":"https://api.github.com/users/patriksvensson/gists{/gist_id}","starred_url":"https://api.github.com/users/patriksvensson/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/patriksvensson/subscriptions","organizations_url":"https://api.github.com/users/patriksvensson/orgs","repos_url":"https://api.github.com/users/patriksvensson/repos","events_url":"https://api.github.com/users/patriksvensson/events{/privacy}","received_events_url":"https://api.github.com/users/patriksvensson/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/cake-build/cake/labels/feature","name":"feature","color":"84b6eb"},{"url":"https://api.github.com/repos/cake-build/cake/labels/idea","name":"idea","color":"fad8c7"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":1,"created_at":"2015-01-16T15:13:49Z","updated_at":"2015-01-16T17:03:42Z","closed_at":null,"body":"Image the following task graph which start at `1` and ends at `5`:\r\n\r\n```     \r\n      1\r\n     /|\\\r\n    / | \\\r\n   2  3  4\r\n    \\ | /\r\n     \\|/\r\n      5\r\n```\r\nNormally, we would do a topographic sort that gives us the order `1 -> 2 -> 3 -> 4 -> 5`, but since this example graph is diamond shaped, we could actually run task `2`,`3` and `4` in parallel, by treating them as a single task which would result in the execution order `1 -> (2 | 3 | 4) -> 5`. \r\n\r\nSince most tasks in a Cake script probably will be I/O bound, this isn't always what you would want, but theoretically this might shave some seconds of a big build script if applied to the right kind of tasks. We could make this functionality opt-in to prevent it from actually being slower."},"comment":{"url":"https://api.github.com/repos/cake-build/cake/issues/comments/70285499","html_url":"https://github.com/cake-build/cake/issues/156#issuecomment-70285499","issue_url":"https://api.github.com/repos/cake-build/cake/issues/156","id":70285499,"user":{"login":"RichiCoder1","id":2391878,"avatar_url":"https://avatars.githubusercontent.com/u/2391878?v=3","gravatar_id":"","url":"https://api.github.com/users/RichiCoder1","html_url":"https://github.com/RichiCoder1","followers_url":"https://api.github.com/users/RichiCoder1/followers","following_url":"https://api.github.com/users/RichiCoder1/following{/other_user}","gists_url":"https://api.github.com/users/RichiCoder1/gists{/gist_id}","starred_url":"https://api.github.com/users/RichiCoder1/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/RichiCoder1/subscriptions","organizations_url":"https://api.github.com/users/RichiCoder1/orgs","repos_url":"https://api.github.com/users/RichiCoder1/repos","events_url":"https://api.github.com/users/RichiCoder1/events{/privacy}","received_events_url":"https://api.github.com/users/RichiCoder1/received_events","type":"User","site_admin":false},"created_at":"2015-01-16T17:03:42Z","updated_at":"2015-01-16T17:03:42Z","body":"I'd piggy back on this and also (re?)mention the idea of async tasks."}}