On Friday, 1 March 2013 at 10:36:04 UTC, Jonathan M Davis wrote:
On Friday, March 01, 2013 09:50:13 Thomas Koch wrote:
> 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.
Two points from the viewpoint of the Debian distribution:
Debian is ported to many different platforms and in average
one new platform
port started every year. A huge pain point for porters are
circular (or
self) dependencies. A lot of effort goes into breaking such
circles.
So in the moment the D language is great in that it does not
introduce a new
circular dependency. It would be a pity to lose this.
The second important thing for Debian (and Fedora and others)
is licensing.
It's a pity that DMD isn't free software and I believe DMD not
being in
distros is one reason for the low popularity of D. It's hard
to learn D with
gdc while all tutorials are based on DMD.
So instead of a rewrite of D, it would rather be important
(from my humble
point of view) to replace non-free parts of DMD.
I don't really care about the license, but I can definitely say
that part of me
finds the idea of having a compiler compiling itself to be a
bad idea, much is
compiler folks love to do that. Recently, I had some older
haskell code that I
needed to compile, but it followed the previous haskell
standard, and I
couldn't get the current compiler to compile it even in
compatability mode.
So, I tried to compile an older version of the compiler from
before the new
standard, and it had exactly the same problems that my code
did, because it
was written in haskell using the older standard. So, I had to
give up on being
able to compile my code, because I couldn't get my hands on an
old enough
version of the compiler. If they'd just written it in C/C++,
then I wouldn't
have had that problem.
I know that it's generally touted as a great idea for a
language to compile
itself, and I'm sure that it would be great to be able to use
D's features in
the compiler, but the circular dependency that that causes is a
definite
negative IMHO.
- Jonathan M Davis
There is no problem with circular dependencies as long as the
language spec has a fixed subset that the compiler is written in.
The reason is that any future version then can compile the
compiler source because the future versions all support the
subset.
This is why it is so important to get the fixed language subset
down because it will the core language features and can't be
changed without causing regressive dependencies.
Any evolution of the D compiler will compile it's own compiler
source as long as it properly implements the D language subset.
This subset also has to be a subset of the current dmd language
implementation to bootstrap from.