Reggae v0.0.5 super alpha: A build system in D

Sergei Nosov via Digitalmars-d-announce digitalmars-d-announce at puremagic.com
Mon Apr 6 04:29:19 PDT 2015


On Sunday, 5 April 2015 at 00:22:35 UTC, Atila Neves wrote:
> It seems to me that different projects might benefit from 
> different compilation strategies. It might just be a case of 
> unit tests alongside production code vs in separate files. As 
> mentioned before, my experience with per-module compilation was 
> usually faster, but I'm going to change the default to be per 
> package.

I want to also share my experience in that regard.

When I was writing a vibe.d based application, I used dub as a 
build system, which sends everything in one go. My application 
was just a couple of files, so I was, practically, just building 
vibe every time.

I was developing the application on a desktop with 4 Gb RAM and 
everything was fine (albeit I was missing the "progress bar" of 
files in progress provided by ninja/make).

But then it was time to deploy the app, and I bought a 1 GB RAM 
virtual node from Linode. After executing dub it told me "Out of 
memory" and exited. And there was nothing I could do.

So I took the only option I saw - I switched to CMake (modified 
for working with D) to provide me a separate compilation build 
(ninja-based) and swore to never again.

I understand the reasoning behind both separate and "throw in 
everything" compilation strategies. And I also understand the 
pros of a middle-ground solution (like, per-package one), which 
is probably the way D will go. But this area seems kind of gray 
to me (like, in my case the "per-package" solution wouldn't work 
either, if I understand it correctly).

So, personally, I will probably stick to separate compilation, 
until I see that:

- The pros of "batch" compilation are clear and, desirably, 
obvious. At the moment it seems to me (seems to me), that faster 
compilation and attribute inference just don't have a significant 
impact.
- There's a way to fine tune between "separate" and "throw in 
everything" compilation if necessary.

Thanks!



More information about the Digitalmars-d-announce mailing list