The DUB package manager

Rob T alanb at ucora.com
Sat Feb 16 14:58:41 PST 2013


On Saturday, 16 February 2013 at 19:35:47 UTC, Russel Winder 
wrote:
> On Sat, 2013-02-16 at 20:15 +0100, Jacob Carlborg wrote:
> […]
>> I'm thinking that there should be a build tool that drives 
>> everything. The build script contains package dependencies. 
>> The build tool will ask the package manager to get 
>> linker/import paths and libraries for the dependencies.
> […]
>
> First a plug for people to think of SCons and Waf, not to 
> mention
> Gradle, when starting to rattle of build tools.
>
> The SBT folks are using Scala in quite interesting ways to 
> enable Scala
> to define project specifications with all the non-inferable
> dependencies.
>
> The Gradle folks have already done almost everything the SBT 
> folks are
> doing, but using Groovy rather than Scala.
>
> The Go folk have done something interesting in that they have 
> merged the
> whole concept of configuration and build by doing everything 
> over DVCS.
> You put your sources in Git, Mercurial, Bazaar (they really 
> should
> include Fossil as well but…) and these can be Got and the 
> modules
> created within the standard structure local hierarchy.  The 
> have a
> single command that performs all activity. D has rdmd but 
> compared to
> Go's go command it cannot do a lot.
>
> I would suggest now is the time to think outside the box, 
> analogous to
> the ways the Gradle and SBT folk have on the JVM and the way 
> the Go folk
> have for native builds of statically linked code.
>
> Instead of thinking in terms of compile, link, modules, 
> dependencies,
> what is the workflow that makes D the compelling language for 
> building
> Fortran/C/C++/D systems. This is suggesting that the milieu to 
> attack is
> the one currently being won by Python in the computationally 
> intensive
> areas of bioinformatics and scientific computing.
>
> Can D be the project specification language using convention 
> over
> configuration. Project directories are in a standard form (with
> exceptions describable) with dependencies either inferred by 
> scanning
> the project sources or specified in a trivial way in the project
> specification file.
>
> Thus I suggest that it is not that the build tool is embedded 
> in the
> package manager but that package and dependency management is 
> part of
> the build system.

I'm having good success using D itself as the build tool 
language, and I'm at the point now where I'm getting much better 
results than what I was getting out of using external build 
tools, so for me there's no looking back.

I run rdmd on a .d "script" that I wrote that's setup to do 
exactly what I want.

What is missing from D is a good library of functions that are 
generally useful for writing build scripts. Phobos already 
supplies a great deal of what is needed that can be used to 
construct what is missing.

The benefit of using D is that I do not have to install and learn 
a secondary language or conform to a specific build format, or 
follow any weird restrictions. What I want to do is build my D 
code, not learn something new and perform acrobatics to get the 
job done. I can even use the same D process to build C/C++ code 
if I wanted to expand on it.

What I'm saying here is that I see no reason to use a language 
other than D itself as the build tool. What D can use is an 
addition to Phobos that supplies the necessary generalized 
functions that all build tools should supply, and I don't think 
there's all that much that's missing.

For a package manager, some standards may be required, but it too 
can be done completely with D.

Why use json (which is a subset of javascript), or ruby, or 
python, etc? Is there something fundamentally wrong with D that 
makes it unsuitable for this role?

--rt


More information about the Digitalmars-d mailing list