compiler bootstrapping
timotheecour
thelastmammoth at gmail.com
Fri Jan 18 16:30:51 PST 2013
I'm wondering whether it would make sense to do compiler
bootstrapping to speedup further development and bugfixing?
This is inspired by a recent comment from Andrei
(https://github.com/D-Programming-Language/dmd/pull/1489) ("I
think we're getting closer to the point we could and should do
some bootstrapping inside the compiler. Using D for tools may be
a simple entry point."). This came up regarding the difficulty in
doing simple things in portable way in C (eg vergen.c).
Here's how this could work relatively easily:
1) define a good enough D specs (called D_specs_frozen). We could
use a dumbed-down version (D1) but might as well use specs from
the latest D2.061 release, which includes UDA etc. Compile
corresponding source code (D_src_frozen) to obtain dmd_frozen
executable. Development on D_src_frozen stops (only very critical
bugfixes, see below).
2) start a new fork of dmd (D_src_bootstrap) from latest dmd
version and gradually rewrite most/all of dmd in D_specs_frozen
language. This can be done incrementally, using a mix of c and d
files as intermediate stage and converting them one by one (can
be semi-automated). I counted "only" 181 C files, which is not
excessive. Compile dmd_bootstrap executable using dmd_frozen. The
D specs can continue to evolve at that point, new features get
added and bugs fixed.
Note, D_src_frozen still contains bugs, but a majority of which
won't have to be fixed in the D_src_frozen branch. That's because
there'll be only 1 project that depends on D_src_frozen, which is
D_src_bootstrap, so bugs or language limitations can be dealt
with for that one project. Any other project will be based on the
continuously improving new D branch.
Instead, people can focus on fixing bugs and enhancing features
in the D_src_bootstrap branch, which should be orders of
magnitude easier given that it'll be written in D D_specs_frozen
instead of C++.
More information about the Digitalmars-d
mailing list