DIP11
Nick Sabalausky
a at a.a
Thu Aug 11 12:09:15 PDT 2011
"Steven Schveighoffer" <schveiguy at yahoo.com> wrote in message
news:op.vz166yaieav7ka at localhost.localdomain...
> On Thu, 11 Aug 2011 12:24:48 -0400, Andrew Wiley
> <wiley.andrew.j at gmail.com> wrote:
>
>> On Thu, Aug 11, 2011 at 5:52 AM, Steven Schveighoffer
>> <schveiguy at yahoo.com>wrote:
>>> I think the benefit of this approach over a build tool which wraps the
>>> compiler is, the compiler already has the information needed for
>>> dependencies, etc. To a certain extent, the wrapping build tool has to
>>> re-implement some of the compiler pieces.
>>>
>>
>> This last bit doesn't really come into play here because you can already
>> ask
>> the compiler to output all that information. and easily use it in a
>> separate
>> program. That much is already done.
>
> Yes, but then you have to restart the compiler to figure out what's next.
> Let's say a source file needs a.d, and a.d needs b.d, and both a.d and b.d
> are on the network. You potentially need to run the compiler 3 times just
> to make sure you have all the files, then run it a fourth time to compile.
>
That's *only* true if you go along with DIP11's misguided file-oriented
approach. With a real package manager, none of that is needed. Your app just
says "I need packages X, Y and Z."
And X, Y and Z do the same for their requirements. This is all trivial
metadata. Emphasis on *trivial*. So, before DMD is ever invoked at all,
before one line of the source is ever even read, the package manager has
make sure that *everything* is *already* right there. No need to go off on
some goofy half-cocked "compile/download/complile/download" dance.
So DMD *never* needs to be invoked more than twice. Once to get the deps,
once to compile. Better yet, if DMD gets the
switch --compile-everything-dammit-not-just-the-explicit-files-from-the-command-line,
then DMD never needs to be invoked more than *once*: Once to figure out the
deps *while* being intelligent enough to actually compile all of them.
> And there is no parsing of the output data,
Parsing the .deps file is extremely simple. RDMD does it with one regex.
Personally, I think even that is overkill.
Better yet, with a switch to make DMD incorporate RDMD's --build-only
functionality, there is *still* no parsing of output data.
So all in all, there is *nothing* that DIP11 does that can't be done
*better* by other (more typical) means.
More information about the Digitalmars-d
mailing list