I have restored the original 'multitask' for single-threaded mode only. Now Drake and Rake should have functionally identical codepaths for single-threaded mode (default behavior); my previous assertion of such which wasn't quite true. I have also taken Thomas Sawyer's suggestion for a randomizing option (credited in the ChangeLog). New sections of the README: === Migrating to -j First of all, do you want to bother with -j? If you are satisfied with your build time, then there is really no reason to use it. If on the other hand your build takes twenty minutes to complete, you may be interested in investing some time getting the full dependency tree correct in order to take advantage of multiple CPUs or cores. Though there is no way for Drake to fathom what *you* mean by a correct dependency, there is a tool available which helps you get closer to saying what you mean. % drake --rand[=SEED] This will randomize the order of sibling prerequisites for each task. When given the optional SEED integer, it will call srand(SEED) to produce the same permutation each time. The randomize option also disables +multitask+. Though this option may produce an error due to an unspecified dependency, at least it will be an error which is exactly the same on each run (with SEED). In addition, you'll have the major debugging advantage of using a single thread. This option will also work in multi-threaded mode. After all, once -jN is running smoothly there is *still* no guarantee that you have it right. However with each successful execution of drake -jN --rand, the probability of correctness approaches 1 (though asymptotically so). (The only way to prove correctness is to test all such permutations, which for any non-trivial project would be prohibitively large, especially those which meaningfully benefit from -j.) === MultiTask When more than one thread is given, +multitask+ behaves just like +task+. Those tasks which may properly be run in parallel will be run in parallel; those which cannot, will not. It is not the user's job to decide. In other words, for -jN (N > 1), +multitask+ is an alias of +task+. For -j1 (default), +multitask+ behaves as the original. -- Posted via http://www.ruby-forum.com/.