On Tue, 14 Sep 2010 23:33:37 +0400, Nick Sabalausky <a...@a.a> wrote:
"Eldar Insafutdinov" <e.insafutdi...@gmail.com> wrote in message
news:i6ni0q$31j...@digitalmars.com...
Hi Nick!
If you are going to replace dmd's backend, you might want to have a look
at ddmd,
as we have plans to make other backends for it. And of course it is much
more
pleasant to work with D rather than C++!
Actually I was thinking of doing as much of my backend as possible in D
anyway since D and C are supposed to be link-compatible (and since I got
really fed up with C/C++ a long time ago). Of course, dmd is C++, not C,
so
I figure I might need to add a C-based bridge-to-my-backend in the
front-end...unless dmd sticks to the subset of C++ that D2 supports
linking
with? (Anyone know if that's the case?)
dmd2 supports some of the C++, but it is mostly limited to free functions
and virtual member functions. D also has no direct mapping for C/C++
"long" type so some proxy functions might be required. Better than
nothing, anyway.
But you do raise a good point. What's the current state of ddmd's
front-end?
It's at 2.039 atm, and it improves rapidly, e.g. it was at 2.032 about 3
weeks ago. I don't really think you need the most up to date version to
begin with.
What I have in mind is to just rip out dmd's current backend stuff
entirely,
maybe even including the toObjFile and toIR methods, or at least big
chunks
of them, and replace it all with a PHP-generator. (Yea...I'm fairly
determined to be able to do as much of my web dev as possible in D.) So
depending on the current level of ddmd's progress, I'm wondering if it
might
be more practical to just stick with my orignal plan of using dmd and
then
switch over to ddmd once ddmd is ready. Although, one benefit of using
dmd
is it would likely make it quicker and easier to merge in changes from
new
dmd releases.
I would recommend against heavy modification of the original code (e.g.
getting rid of toIR/toObjFile, be it dmd or ddmd). Use external visitors
if possible.
Why would you want to generate PHP anyway? There are FastCGI libraries
available for D, and there isn't much that D is missing and PHP has
anyway. Everything else is implementable as a library (and contributable
to Phobos! ;)