LDC - DMD sync strategy
Kai Nacke
kai at redstar.de
Mon Mar 24 05:05:18 PDT 2014
Hi Yuriy!
On Monday, 24 March 2014 at 09:51:34 UTC, Yuriy wrote:
> Hello, I've been looking at LDC sources and it seems a bit
> weird to me, that DMD is not used as a submodule. If LDC aims
> to provide LLVM generation, using original DMD as a frontend,
> it will get hard to maintain merges from original DMD over
> time. And it seems to me, that it is already, as DMD is not
> up-to-date there. E.g. while DMD factored out toIR and toElem
> to visitors, LDC still uses old design.
>
> If i'm right and such problem exists, what do you think of the
> following plan to fix this:
> 1. Create a DMD fork. Create an ldc-dmd branch in it, and
> replace it's contents with current DMD state in LDC.
> 2. Start using DMD fork with it's ldc-branch in LDC repo as a
> submodule.
> 3. Gradually refactor LDC and ldc-dmd branch with the goal to
> completely eliminate differences between ldc-dmd branch and DMD
> fork master.
> 4. Repeat step 3, until complete =)
> 5. Switch submodule to DMD fork master, and close dmd-ldc
> branch.
Well, merging the DMD frontend is not the problem. The
merge-2.064 and merge-2.065 contains the merge of the last 2 DMD
releases. (The latter one contains the refactoring using visitor
pattern.)
In fact, I have a MSBUILD script to do the merge - I only have to
resolve conflicts, which is usually simple.
The real problem is that a change in the frontend must be handled
in the glue layer between frontend AST and LLVM IR. This must
always be done manually.
E.g.: there is only 1 test failure left in the merge-2.064
branch: a missing symbol in std.uni unittest. The merge-2.065
branch has some more problems in phobos unit tests - because I
did not fixed the changes.
Any help here is appreciated.
Regards,
Kai
More information about the digitalmars-d-ldc
mailing list