One more question - an untapped audience.
Bruno Medeiros
brunodomedeiros+dng at gmail.com
Wed Feb 19 07:21:27 PST 2014
On 12/02/2014 13:35, Daniel Murphy wrote:
> "Bruno Medeiros" wrote in message news:ldfpa7$27s3$1 at digitalmars.com...
>
>> There is not a chance in hell DMD would sucessfully be adapted for
>> these purposes. Maybe as fork, but not as the main stream. Even as a
>> fork I hardly see it happening (The Descent IDE went with this route
>> but it the semantic engine was buggy and quickly became very hard to
>> maintain.) The reasons are manyfold and I'm not going into detail, but
>> suffice to say a semantic engine for an IDE needs to be prepared to
>> run in an interactive/deamon mode to have a decent performance, not in
>> batch (run once) mode like a compiler. This adds several constraints
>> and requirements to the semantic engine architecture, something that
>> DMD is not prepared to. It would take a large engineering effort to
>> adapt it to that, and crucially, Walter would have to be involved, but
>> he has his hands full already.
>
Well, I need to revise my statements because, upon further thought, I
dont find them entirely accurate.
I was thinking of the use case of making DMD an interactive semantic
engine deamon, which I still think would take a miracle to get there
(whilst at the same time having a decent measure of quality, that is).
But I understand now your idea is different, you just want to expose the
current compiler functionality as a *library*, and let other
users/programs use it as they see fit, correct? A deamon engine could
then be built on top (or the compiler library embedded directly in
IDE/tool code), but that would be a task for someone else.
Now, that goal (compiler as library) I do believe to be feasible, but
still incredible hard (again, if you want to have something of quality
that is). For example, the compiler library functionality needs to be
prepared to be re-used within the same session. This means you need to
do proper memory management, you can't just allocate blindly and assume
its fine because the code is running under a compiler program which will
then terminate once it's run once. From what I've heard some time ago,
DMD code does nearly no memory management. Maybe this has changed in the
meanwhile and the situation improved drastically (or a D port would
bring in the GC and deal with this problem that way - but then we'd need
the D port for that).
There is other minutiae of functionality which is also important (for
example, good parser error recovery, with sensible AST and source ranges
in the result nodes, etc.)
But anyways, those are secondary points actually. What I think is really
crucial, is that we don't have a main-stream compiler in D. When DMD
gets ported to D, and the main development of DMD happens there, in the
D version, then I'll believe a reasonable compiler-as-library could happen.
> I disagree, this is 'the plan'. Please, go into detail, I would love to
> find out about any roadblocks I've overlooked now rather than later.
What do you mean, are you going to invest a lot of work on that?
More information about the Digitalmars-d
mailing list