First class VMs

Alaric B. Williams
Mon, 28 Apr 1997 07:02:52 +0000

Say, since we're having a VM, it'd be a real good idea to make sure
that virtual machines are first class! This is something I have
in my own OS idea, and they work something like first-class
environments, 'cept they can only be extended, not changed
(makes stuff faster, since compilers can assume more).

BTW bindings in this language (ARGOT) are immutable unless
declared otherwise. This means that the compiler gets to
assume even more, which is nice - constant propogation can
go a long way... 

Anyway, back to environments; the system can provide a standard
language environment with purely closed-system primitives in;
addition, if, cond, etc.

Then modules can be inserted into the environment. These come from
two sources; first of all are interface modules, which provide
services from the hosting environment to the child environment.
Basically, a list of bindings is registered under a module name.

The second source is source code objects, which are things like
source files, imported applets, and all that malarky.

Now, examples of usage - well, Web browser like things can grab
applets and stuff them into environments that have access primitives
inserted by the browser for things like drawing into the applet's
screen area, etc, so the applet expects those primitives to be
in it's environment.

The GUI model works accross networks, so for efficiency, we
ask the remote object to return a GUI applet, which is run
by the user agent in an environment containing primitives for
the usual GUI operations, and RPC communications with the object
this applet is representing, so it can grab the object's data and
send out orders.

Hope this is useful...

Alaric B. Williams (

   ---<## OpenDOS FAQ ##>---

Plain HTML:

Fancy HTML: