On Friday, 8 July 2016 at 23:31:38 UTC, Stefan Koch wrote:
and mine is segfaulting in some bizarre ways (i failed my basic
++ and -- math, and so the stack ;-).
still, it is almost working, with support for both compiled and
interpreted function calls, almost full range of integer math and
some string ops. druntime still compiles and passes unittests,
but phobos segfaulted somewhere deep in my CTFE engine. i really
need to re-check all added opcodes and codegen.
writing that was surprisingly easy. and sometimes simply
surprisingly: "how did you came to me with this, DMD?! eh? aha, i
see now, thank you, grep." ;-)
some stats: virtual machine is <30KB of code now. compiler is
~70KB, but there is alot of copypasta in there (you know, it
happens when the code grows organically).
if someone is interested in interop between frontend and backend,
writing engine like this is a nice way to make yourself familiar,
as CTFE interpreter effectively gets already semanticed AST, with
most things correctly lowered and so on. so you only have to copy
dummy CtfeCompiler from dinterpret.d (it only count vars there,
otherwise doing nothing), and start extending it.
even when we'll get new shiny engine from Stefan, i still
recommend to anyone who wish to understand how compiled and
processed code looks inside the frontend at least try to
implement some simple bytecode compiler. with some care seeing
that you are effectively replacing compiler parts, and it is
still able to compile complex unittests is... yeah, go find the