dmdz

Ellery Newcomer ellery-newcomer at utulsa.edu
Wed Mar 17 13:01:49 PDT 2010


On 03/16/2010 08:13 PM, Andrei Alexandrescu wrote:
> This is solid work, but I absolutely refuse to believe the solution must
> be as complicated as this. Recall that the baseline is a 30-lines
> script. I can't bring myself to believe that a four-modules, over
> thousand lines solution justifies the added complexity.

I count 2 modules and about 800 loc. 2 to 300 of which implements 
functionality which doesn't exist in std.path but should. The ANTLR crap 
could be replaced by a hundred lines of handwritten code, but the 
grammar already existed and took less time.

>
> Besides, what happened to std.getopt? You don't need to recognize dmd's
> options any more than rdmd does. rdmd dedicates only a few lines to
> argument parsing, dmdz makes it a science.

It started when I said, "huh. when is this thing building an executable, 
and when is it building a library?", and parsing dmd's options seemed 
like the most generally useful way of finding that out. I rather like 
the way it's turned out. eg during development:

$ dmdz dxl.zip -unittest
 > ...
$ ./dxl/bin/dxl
 > ...

"alright, unittests pass"

$ dmdz dxl.zip
 > ...

"now for the release executable"

fwiw, I've never used rdmd due to bug 3860.

>
> Don't take this the wrong way, the work is absolutely a tour de force.
> I'm just saying that things could be dramatically simpler with just a
> little loss of features. I'm looking over the code and am puzzled about
> the kind of gunpower that seems to be necessary for achieving the task.

Huh. When all you have is a harquebus ..

>
> Recall what's needed: someone who is able and willing would like to
> distribute a multi-module solution as a zip file. dmdz must provide a
> means to do so. Simple as that. The "able and willing" part is important
> - you don't need to cope with arbitrarily-formatted archives, you can
> impose people how the zip must be formatted. If you ask for them to
> provide a file called "main.d" in the root of the zip, then so be it if
> it reduces the size of dmdz by a factor of ten.
>
>
> Andrei

By restricting the format of the zip file a bit and moving the directory 
dmd gets run in, I might save 100 loc. Maybe.

Does adding main.d to root help with the run flag? It doesn't do 
anything for dmdz that I can see.

By introducing path2list et al into std.path or wherever (really, it is 
quite handy) and fixing basename and dirname, I could save 2 - 300 loc.

By removing piecemeal and getting rid of dmd flags, I could quit 2 - 300 
loc plus the ANTLR modules. Except I find both of those features 
occasionally useful. Given the choice, I'd keep them.



More information about the Digitalmars-d mailing list