What are the worst parts of D?

Atila Neves via Digitalmars-d digitalmars-d at puremagic.com
Wed Sep 24 15:18:29 PDT 2014


On Wednesday, 24 September 2014 at 21:12:15 UTC, Andrei 
Alexandrescu wrote:
> On 9/24/14, 1:10 PM, H. S. Teoh via Digitalmars-d wrote:
>> That's unfortunate indeed. I wish I could inspire them as to 
>> how cool a
>> properly-done build system can be.
> [snip]
>
> That's all nice. However: (1) the truth is there's no clear 
> modern build tool that has "won" over make; oh there's plenty 
> of them, but each has its own quirks that makes it tenuous to 
> use; (2) any build system for a project of nontrivial size 
> needs a person/team minding it - never saw such a thing as it's 
> just all automated and it works; (3) especially if the build 
> system is not that familiar, the role of the build czar is all 
> the more important.
>
> So the reality is quite a bit more complicated than the shiny 
> city on a hill you describe.
>
>
> Andrei

It depends on who you ask, I guess. I don't know what the 
definition of "has won" here is. make is certainly widespread, 
but so is C, Java and Javascript and I don't have much respect 
for those. I wouldn't use make again unless external forces made 
me. For one, it's slower than some of the alternatives, which 
admittedly only matters for larger builds (i.e. somebody's 
personal project on Github isn't ever going to see the 
difference, but a company project will).

I'm saying this because I'm actively working on changing my 
company's existing build systems and did a migration from 
autotools to CMake in the past. I also looked at what was 
available for C/C++ recently and concluded it was better to go 
with the devil I know, namely CMake. From what I know, premake is 
pretty good (but I haven't used it) and tup looks good for 
arbritary rules (and large projects), but the ease of using CMake 
(despite its ridiculously bad scripting language) beats it. For 
me anyway.

BTW, I totally agree with 2) above. Build systems are sort of 
simple but not really and frequently (always?) balloon out of 
proportion. As alluded to above, I've been that czar.

If I were to write a build system today that had to spell out all 
of its commands, I'd go with tup or Ninja. That CMake has support 
for Ninja is the icing on the cake for me. I wrote a Ninja build 
system generator the other day, that thing is awesome.

Make? I'd be just as likely to pick ant. Which I wouldn't.

Atila

P.S. I've thought of writing a build system in D, for which the 
configuration language would be D. I still might. Right now, dub 
is serving my needs.
P.S.S autotools is the worse GNU project I know of


More information about the Digitalmars-d mailing list