With GNUMake it usually safe to assume that a project will *not* work with -j by default. Like you said there are probably a bunch of subtle and not so subtle race conditions. Even if the developers of a makefile use -j, you can pretty sure it doesn't work for some build targets. So, yeah, I agree that would argue in favor of multitask and the developer of the rakefile making explicit that they want to allow a task to execute it's dependencies in parallel.
On 23 October 2012 16:05, Jim Weirich <[email protected]> wrote: > > On Oct 23, 2012, at 4:54 PM, Mark Watson <[email protected]> wrote: > >> What about having the old code called by default and if you specify -j >> the new parallel code is executed? That way old rakefiles still work, >> and new ones can take advantage of the -j feature > > So you check out a new project from GitHub and decide to run rake on it. How > do you decide if its safe to run with -j or not? Try it and see? Wait for > subtle unreproducible race conditions to manifest? > >> (after all that was good enough for GNUmake). > > GNUMake mainly deals with shelling out to commands. I suspect Rakefiles that > mainly shell out to compilers and linkers will have little problem with -j. > > It's the Rakefiles that execute significant Ruby code in process that I'm > concerned about. And maybe I'm overly concerned about this issue, but I've > dealt with real-time systems and multiple threads in a past life and know how > tricky it can be to get things right.[1] > > -- > -- Jim Weirich > -- [email protected] > > [1] Ask me sometime about my 1 in a million failure. > > > > _______________________________________________ > Rake-devel mailing list > [email protected] > http://rubyforge.org/mailman/listinfo/rake-devel _______________________________________________ Rake-devel mailing list [email protected] http://rubyforge.org/mailman/listinfo/rake-devel
