DUB build questions

uri via Digitalmars-d-learn digitalmars-d-learn at puremagic.com
Mon Dec 22 04:39:26 PST 2014


On Saturday, 20 December 2014 at 08:36:15 UTC, Russel Winder via 
Digitalmars-d-learn wrote:
>
> On Sat, 2014-12-20 at 05:46 +0000, Dicebot via 
> Digitalmars-d-learn wrote:
>> On Saturday, 20 December 2014 at 04:15:00 UTC, Rikki 
>> Cattermole wrote:
>> > > b) Can I do parallel builds with dub. CMake gives me 
>> > > Makefiles so I can
>> > > make -j does dub have a similar option?
>> > 
>> > No
>> 
>> Worth noting that it is not actually a dub problem as much, it 
>> is simply not worth adding parallel builds because separate
>> compilation is much much slower with existing D front-end 
>> implementation and even doing it in parallel is sub-optimal
>> compared to "dump-it-all-at-once".
>
>>From previous rounds of this sort of question (for the SCons D
> tooling), the consensus of the community appeared to be that 
> the only
> time separate module compilation was really useful was for 
> mixed D, C,
> C++, Fortran systems. For pure D systems, single call of the 
> compiler
> is deemed far better than traditional C, C++, Fortran 
> compilation
> strategy. This means the whole "make -j" thing is not an issue, 
> it
> just means that Dub is only really dealing with the "all D" 
> situation.
>
> The corollary to this is that DMD, LDC and GDC really need to 
> make use
> of all parallelism they can, which I suspect is more or less 
> none.
>
> Chapel has also gone the "compile all modules with a single 
> compiler
> call" strategy as this enables global optimization from source 
> to
> executable.
> 

Thanks for the info everyone.


I've used dub for just on two days now and I'm hooked!

At first I was very unsure about giving up my Makefiles, being 
the build system control freak that I am, but it really shines at 
rapid development.

As for out of source builds, it is a non-issue really. I like 
running the build outside the project tree but I can use 
gitignore and targetPath. For larger projects where we need to 
manage dependencies, generate code, run SWIG etc. I'd still use 
both SCons or CMake.


Regarding parallel builds, make -j on CMake Makefiles and "dub 
build" feel about the same, and that's all I care about.

I'm still not sure how dub would scale for large projects with 
100s-1000s of source modules. DMD ran out of memory in the VM 
(1Gb) at around 70 modules but CMake works due to separate 
compilation of each module ... I think. However, I didn't 
investigate due to lack of time so I wouldn't score this against 
dub. I am sure it can do it if I take the time to figure it out 
properly.

Cheers,
uri


More information about the Digitalmars-d-learn mailing list