guile-devel
[Top][All Lists]
Advanced

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

Re: Reviving Guile-VM


From: Neil Jerram
Subject: Re: Reviving Guile-VM
Date: Fri, 29 Apr 2005 21:40:22 +0100
User-agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.7.7) Gecko/20050420 Debian/1.7.7-2

Ludovic Courtès wrote:
Hi,

address@hidden (Ludovic Courtès) writes:


I've started trying to revive Guile-VM which was written by Keisuke
Nishida 5 years ago [1] and was unfortunately never finished nor
adopted.

That is excellent news. It always seemed like a very interesting project when Keisuke was working on it and discussing on the mailing list. (Unfortunately, though, I can't say that I understood it very much.)

One point of possible interest is that at about that time, qscheme was also donated to the CVS repo, and my impression was that qscheme also contained some kind of VM technology. It might be worth you taking a look at qscheme also, therefore.

I did not mention precisely what Guile-VM is and not everyone heard
about it before.  So here we go.

Guile-VM consists of a virtual machine, a compiler, and an assembler.
The VM itself is described in the doc as follows:

  A Guile VM has a set of registers and its own stack memory.  Guile may
  have more than one VM's.  Each VM may execute at most one program at a
  time.  Guile VM is a CISC system so designed as to execute Scheme and
  other languages efficiently.

So it's basically a CISC-like machine architecture.  The compiler can
compile Guile Scheme code into "assembly code" that uses the VM's
instruction set.  This instruction set is purposefully not too close to
Scheme, and not too close either to the underlying processor instruction
set.

Guile-VM's assembler takes a sequence of instructions and produces
bytecode which may be quickly loaded and (hopefully) interpreted by the

Hang on, I thought the instructions were byte code ... How many levels of byte code are there, and how do they differ?

VM.  Other Free Scheme implementations, such as STklos [1], include an
ad hoc virtual machine.  Interpreting bytecode is usually significantly
faster than interpreting source code.  Yet, it is still potentially much
slower than equivalent code compiled to the machine's native code (as
with MIT/GNU Scheme [2]).  There were discussions about how well
Guile-VM would perform compared to an interpreter, as in [3].

Guile-VM has been dormant in the CVS repo [4] for...  4 years.  :-)

Good luck!

        Neil




reply via email to

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