[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: VM module design
Re: VM module design
Thu, 22 Feb 2001 03:21:00 -0500
Wanderlust/2.4.0 (Rio) SEMI/1.13.7 (Awazu) FLIM/1.13.2 (Kasanui) Emacs/21.0.96 (i686-pc-linux-gnu) MULE/5.0 (SAKAKI)
At Wed, 21 Feb 2001 12:09:33 +0100 (MET),
Martin Grabmueller wrote:
> Will your VM still be integrated with Guile, or are you moving away
> from it? I would really like to see Guile compatibility in the final
I'm not sure. I hope it will become part of Guile in the future, but
that's not what I can decide. I just want to work on my project as
I feel like until it becomes usable enough. Still, my hope is to
contribute to the GNU/Linux community rather than being apart from it.
I would like to have a language system which is very useful in every
respect. We want to share libraries between languages, so we need a
common runtime system. We want an efficient runtime system, so I am
working on a compiler, a compact VM, and a fast loader. We want all
sorts of libraries, including mathematics, graphics, networking, and
database, but I cannot do everything about this. It's not a good
idea to move away.
Regarding the compatibility with the current Guile, there is a big
problem. C-level compatibility is okay, but the Scheme level is
problematic. Guile defines macros as objects; I cannot compile them.
In order to execute the present code on my VM, I have to write an
interpreter rather than a compiler, which is ridiculous. On the
other hand, people do not want to throw the existing code away
completely. So, my plan is this:
1. Write a translator, a compiler, and a VM that execute R5RS
completely and successfully. This language is called `r5rs'.
2. Write a translator of an extended Scheme language which is
very similar to the current Guile Scheme. The only difference
is that there is no support of `procedure->macro', `procedure->
mmacro', `procedure->syntax', and `set-current-module'. This
language is called `gscheme' or something.
3. Write an interpreter in Scheme that emulates the current Guile
completely. This interpreter won't be as fast as the current
evaluator. This language is called `guile1-compat' or something.
After these steps are completed, the current evaluator and the module
system can be replaced by my VM. (I guess it takes a year or two.)