www.digitalmars.com         C & C++   DMDScript  

digitalmars.D - To help other D implementations

One of the purposes of D is to keep an eye on its implementation, to make it
not too much hard to write, and to allow a fast compilation.

While the back-end of dmd lacks some features that both GCC and LLVM back-ends
have, there are few DMD features used by D that are not easy to implement with
those free back-ends.

You can find info about this regarding LDC here, see the long section
"Violations of the specification":
http://www.dsource.org/projects/ldc/wiki/Docs

And here about GDC, see the "Known Differences from DMD" and "Inline Assembler
Notes" sections:
http://dgcc.sourceforge.net/gdc/manual.html

I think porting D to the LLVM and GCC back-ends is important enough. It can be
positive to take a look at those porting issues (and keeping in mind gcc and
llvm are moving targets that can improve and become more flexible in future, or
them being open source can even be modified to support D features better), and
reconsider how useful the related D features are. If they are seen as not so
important, then it's even possible to drop those features, to allow the
creation of D compilers with more conformance with the D specs.

I think gotos to labels inside inline asm blocks cause implementation problems
to both ldc and gdc.

Bye,
bearophile
Apr 22 2010