[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: What happened to the ex-Guile VM?
From: |
Keisuke Nishida |
Subject: |
Re: What happened to the ex-Guile VM? |
Date: |
Tue, 20 Mar 2001 22:45:09 -0500 |
User-agent: |
Wanderlust/2.4.0 (Rio) SEMI/1.13.7 (Awazu) FLIM/1.13.2 (Kasanui) Emacs/21.0.99 (i686-pc-linux-gnu) MULE/5.0 (SAKAKI) |
At 20 Mar 2001 22:52:34 +0100,
Marius Vollmer wrote:
>
> > I found somebody was working on a bytecode interpreter (VM) for
> > Guile around 1997.
>
> Was this the coupling of Guile to a Java Virtual Machine, "Latte"?
I'm not sure. This message:
http://www.red-bean.com/guile/guile/old/2249.html
> As to a future integration of your VM into Guile, I'd say that it
> would simplify things a lot when you try to keep the many different
> improvements in guile-vm as separate (or `orthogonal') as possible.
> That is, it will much easier to switch to your VM, when we don't also
> have to switch to your module system. Or the other way around.
You don't have to, but in order to support the current module system,
you need to add a support of it (which should be easy, by the way;
just to replace a few functions).
However, the compiler is more closely related to the module system.
I needed a new module system for a better compilation support.
(By the way, the current modules are automatically converted into
the new modules, so you can still use existing modules.)
> It will also be important to know how stanards conforming your VM is.
> Does it handle continuations correctly?
Within the VM, yes, by stack copying. But I haven't thought of
C level continuations. Should they be supported?
> > % bigloo -O6 fib.scm ;; version 2.2b
> > % time a.out
> > 1346269
> > real 0m0.271s
> > user 0m0.240s
> > sys 0m0.020s
>
> This is impressive. This is a speedup of 88. A hand-coded fixnum
> only Lightning version of fib gives a speed up of about 230. Does
> bigloo use generic arithmetic?
It seems to be using fixnums. With generic arithmetic, it slows
down a lot:
% cat fib.scm
(module fib)
(define (fib n::int) (if (< n 2) 1 (+ (fib (- n 1)) (fib (- n 2)))))
(display (fib 30))
% bigloo -O6 fib.scm
% time a.out
1346269
real 0m1.302s
user 0m1.280s
sys 0m0.000s