Squeak forth and Logo

John Redford garrow at tiac.net
Wed Jun 7 23:42:32 UTC 2006


goran at krampe.se wrote on Thu Apr 27 18:49:24 UTC 2006:

> A few other interesting things in this area:
> 
> - FuelVM. This is actually a VM written in C (IIRC) that takes forth
> code as its "bytecodes". Interesting stuff, but I don't think it is
> developed right now.

Saw your mail (and some related(?) chat logs) when I was Googling -- for the
first time in a long time -- for "fuelvm".  Since it was only a few months
ago, I figured I'd respond.

I am the author of FuelVM.  It is not what one would call "actively being
developed" mostly because it was finished.  At least, it was finished in the
sense of being complete and meeting its original design goals.  Beyond that,
it has not, to my knowledge, actually been used anywhere, so there has been
no motivation to fix bugs (there are no known bugs) or add features.

The system does use GNU Lightning to provide the underlying "portable
machine code" layer, and I would have to tell you that it, while complex and
wonderful in design, leaves a few things to be desired on the POWERPC and
SPARC platforms.  One "open project" is to write a replacement for GNU
Lightning, but I have had no motivation to pursue it.

If you have any questions about FuelVM, I'd be happy to address them.  I
tried to read some context to see how it came up on your list, but I was
unable to get much more than the general mention that it has some
interesting bits.

If I say so myself, it does have some interesting bits, particularly in
regard to being designed for embedding.  The system has support for threads,
GC, external dynamic linkage, and other "cool stuff", but it does not
require or depend on any of those things being present.  It does not even
depend on C Standard Library functionality, such as printf() and malloc().
The system is fully reentrant and VM instances require only a few hundred
bytes of memory (minimally), facilitating direct stack allocation. All of
the implementation internals and external interfaces are performed with
function pointer structures -- a slight sacrifice of speed that obtains
nearly arbitrary customization opportunities.

This system was built as a "design demonstration", to show that it is
possible to build a fully featured, fast system that could have a very tiny
core and that didn't have to tie itself to particular libraries.  Because it
is intended to just be a "core", there has been little follow on to expand
it or pile features onto it.  The concept is that with support for direct
linkage (defining Forth words to call routines in the embedding system) and
dynamic linkage (opening dynamic libraries to access X11 routines & such), a
user of the system can add-on anything they want.

Anyway, I am pleasantly surprised to see anyone mention it, so thanks for
that.  I am going to go look at some of the other systems you mentioned in
the same thread.

--
John Redford






More information about the Squeak-dev mailing list