Which language futures make D overcompicated?

Nick Sabalausky (Abscissa) SeeWebsiteToContactMe at semitwist.com
Fri Feb 9 22:13:51 UTC 2018


On 02/09/2018 02:01 PM, H. S. Teoh wrote:
> 
> Currently, my vibe.d project has a subdirectory containing an empty
> dummy dub project, the sole purpose of which is to declare vibe.d
> dependencies so that `dub build` in that subdirectory will fetch and
> build vibe.d and whatever else it may depend on, and build it into a
> linkable state.  Once that's done, I leave dub aside and use SCons to
> actually build and link my program with the libraries built by dub.
> This resulted in an instant improvement in my build times by (at least)
> half, as well as free me from needless network lookups when I'm actually
> coding locally and don't *need* to be upgrading dependent libraries.
> 

I'm kind of envious of that approach, and REALLY tempted to adopt it 
myself, but there are some unfortunate probelms with it (which are 
incidentally the exact same reasons I eventually conformed and 
begrudgingly strated using dub as my main build tool, as much as I 
dislike doing so):

1. From a compiler command-line perspective, trying to incorporate 
vibe.d in a project that isn't built with dub proved in my experience to 
be a royal pain. And then upgrading to newer versions of vibe.d had a 
tendency to break it in non-obvious ways.

2. If you want your project (especially if it's a lib) to participate in 
the the dub package repository ecosystem, you pretty much have to 
support dub as a build tool. Otherwise, anyone who DOES use dub as a 
build tool will have major trouble trying to use your lib.

So even as a package manager, dub is viral. And the unfortunate 
consequence of that is that it completely divides D package ecosystem in 
two.


More information about the Digitalmars-d mailing list