[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: VM module design

From: Keisuke Nishida
Subject: Re: VM module design
Date: Thu, 22 Feb 2001 03:21:00 -0500
User-agent: 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
> VM.

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.)


reply via email to

[Prev in Thread] Current Thread [Next in Thread]