Migrating dmd to D?

SomeDude lovelydear at mailmetrash.com
Fri Mar 1 23:09:57 PST 2013


On Friday, 1 March 2013 at 11:45:42 UTC, Don wrote:
> On Thursday, 28 February 2013 at 00:37:50 UTC, Andrei 
> Alexandrescu wrote:
>> Hello,
>>
>>
>> Walter and I have had a long conversation about the next 
>> radical thing to do to improve D's standing. Like others in 
>> this community, we believe it's a good time to consider 
>> bootstrapping the compiler. Having the D compiler written in D 
>> has quite a few advantages, among which taking advantages of 
>> D's features and having a large codebase that would be its own 
>> test harness.
>>
>> By this we'd like to initiate a dialog about how this large 
>> project can be initiated and driven through completion. Our 
>> initial basic ideas are:
>>
>> 1. Implement the dtoh standalone program that takes a D module 
>> and generates its corresponding C++ header.
>>
>> 2. Use dtoh to initiate and conduct an incremental port of the 
>> compiler. At given points throughout the code D code will 
>> coexist and link with C++ code.
>>
>> 3. At a point in the future the last C++ module will be 
>> replaced with a D module. Going forward there will be no more 
>> need for a C++ compiler to build the compiler (except as a 
>> bootstrapping test).
>>
>> It is essential that we get support from the larger community 
>> for this. This is a large project that should enjoy strong 
>> leadership apart from Walter himself (as he is busy with 
>> dynamic library support which is strategic) and robust 
>> participation from many of us.
>>
>> Please chime in with ideas on how to make this happen.
>
> This would be a huge step forward, I'm sure all of us who have 
> made significant contributions to the compiler are frustrated 
> by the many things that are difficult in C++ but would be easy 
> in D.
>
> But in my view, before step 2 can happen, we need to clean up 
> the glue layer.
> Once we have an isolated, clearly defined front-end that is 
> shared between dmd, gdc and ldc, we can start converting it.

Like js.mdnq wrote, I'm pretty sure this will fail because of the 
circular dependency problem and because of memory problems, if 
the compiler isn't written in a strict subset of the language. 
AFAIK, Ocaml is compiled in a strict subset of Caml, for 
instance, and I would believe many bootstrapping compilers do the 
same.


More information about the Digitalmars-d mailing list