On Sun, Dec 14, 2008 at 3:22 PM, Walter Bright
<newshou...@digitalmars.com> wrote:
> Jarrett Billingsley wrote:
>>
>> Walter is the only one who can make DMD faster, and I think his time
>> is much better spent on designing and maintaining the language.  The
>> reference compiler is just supposed to be _correct_, not necessarily
>> _fast_.  If Walter spent all his time working on making the the DMDFE
>> optimizer better and making DMD backend produce faster code, he
>> wouldn't have time to work on the language anymore, and it would be
>> duplicated effort since GDC and LDC already do it better.
>
> But there are other reasons to keep the back end. Sometimes, I need to tweak
> it to support something specific. For example,
>
> 1. the stuff to hook together module constructors
> 2. thread local storage
> 3. position independent code
> 4. support for various function call sequences
> 5. D symbolic debug info
> 6. Generating libraries directly
> 7. Breaking a module up into multiple object files
>
> and coming soon:
>
> 8. insertion of memory fences
> Other possibilities are D specific optimizations, like taking advantage of
> immutability and purity, that I doubt exist in a back end designed for
> C/C++.

Of course that back end was also designed for C/C++ originally, right?
But anyway, I agree with bearophile, that requiring too many special
features out of a back end will make it hard for any alternative D
compilers to keep up.

> While of course all this can be added to any back end, I understand how to
> do it to mine, and it would take me a lot of time to understand another well
> enough to be able to know just where to put the fix in.

That's understandable, but at some point it becomes worth the effort
to learn something new.  Many people get by just fine using C++.  They
may be interested in D, but it just takes too much effort.  However, a
little effort invested in learning D pays off (at least we all believe
so or we wouldn't be here).  Likewise, if there were a really solid
well-maintained back end with a liberal open source license that
generates great code, it would very likely be worth your time to learn
it, even though it might be rough going in the short term.

> Another thing I'd be very unwilling to give up on with the dmd back end is
> how fast it is. DMC is *still* by far the fastest compiler out there.

I'd gladly trade fast compilation for "has a future" or "supports
64-bit architectures" or "generates faster code" or "doesn't crash
when there are too many fixups in main()".   Have you seen the
messages about how long it can take to compile DWT applications?  DWT
progs are already desperately in need of some smarter dependency
tracking and ability to do minimal recompilations.  I think
implementing that (in a build system or whatever) would more than make
up for the loss in raw compilation speed.  Besides, I think a chunk of
the the compilation speed is thanks to the module system, and avoiding
the endless reparsing required for C++ #includes.  So any D compiler
should benefit.

Anyone have the data for the time required to compile tango with DMD
vs LDC?  It would be interesting to see how bad the difference is.

Anyway, all that said,  it's not clear that we really do have that
mythical "uber backend" available right now.

According to my conversations on the clang mailing list, the current
target is for LLVM to be able to fully support a C++ compiler by 2010.
 I'm not quite sure what all that involves, but apparently it includes
things like making exceptions work on Windows.  So it certainly does
look a bit premature to move over to LLVM as the primary platform for
D at this point.

--bb

Reply via email to