[virtmach] My interest in VMs

David S. Cargo escargo@anubis.network.com
Mon, 13 Dec 1999 12:03:24 -0600 (CST)


I haven't said anything on this mailing list yet because I hadn't had
all my thoughts organized.

>From my own viewpoint, I see the issue of virtual machines as a
potential way to lower the cost of implementing interesting languages
and systems.

Part of this hinges on why and how different languages are different.
For example, take such diverse languages as (in alphabetical order),
Icon (http://www.cs.arizona.edu/icon/index.htm), Java
(http://www.javasoft.com/), Lua (http://www.tecgraf.puc-rio.br/lua/),
Perl (http://www.perl.org/), Pike (http://pike.idonex.se/), Python
(http://www.python.org/), REBOL (http://www.rebol.com/), Smalltalk
(http://www.objectbap.com/smalltalkwebring.html), and Tcl
(http://www.scriptics.com).

In appearance, they some features in common, and many features that are
different.  In terms of semantics, they also have many features in
common and many features that are different.

However, for features that are the same, such as portability across
platforms, support for complex data types, support for networking
protocols, and (for a subset of these languages) support for a graphical
interface, the costs of developing all these different, but similar
features is paid multiple times.

So, the question in my mind is, "Is there a way to implement multiple
languages (each with its own interesting set of features) where each
language does not need to pay a price to implement features that are
common with other languages?"  The answer to this might be by providing
an abstract machine or a virtual machine that, as part of the machine
implementation, provides the common features in a way that the languages
can easily use.

(For some definitions of these terms as I have used them,
Abstract machine (see http://burks.bton.ac.uk/burks/foldoc/57/1.htm),
Virtual machine (see http://burks.bton.ac.uk/burks/foldoc/67/116.htm),
UNiversal Computer Oriented Language (see
http://www.iecc.com/comparch/article/97-04-053).)

I DO NOT know that answer to the question, but to me it is the
fundamental question.  In practical terms, I could see where all the
languages could not use the same identical virtual machine, but maybe
there could be a "virtual machine kit," that provides a (uniform) start
to making a VM for each language.  As long as development of the common
part was kept compatible, fixes to the implementation of the underlying
operating services used for portability could be shared by every
language that used such a kit.

This is the kind of subject I would like to see the virtual machine list
discuss.  Is such an approach technically feasible?  Is such an approach
politically feasible?  Is such an approach beneficial?  Do any of the
languages currently have a base for such a VM?  (Icon has--or had--a
separately language used for implemementing the run time library.)

Is there a practical way to link the interpreters (and/or compilers)
from such a diverse set of languages to such a runtime environment?
(Can a Smalltalk primitive connect like other languages?)

Anyway, this is what I would like to see as topics of discussion.

David S. Cargo