Minimum set of primitives?

Chris Bitmead
Fri, 20 Mar 1998 01:53:00 +0000

> For example, if we want to implement system-wide garbage collection, we
> have to guarantee that, at some level of granularity, all pointers
> between objects are known to the garbage collector.  The easiest way to
> handle this on a fine granularity (the usual Lisp way) is to make data
> types `holy' and inviolable -- only special kernel code has the right
> to do pointer arithmetic, for instance, and no userland programs.
> Ideally, we could get away from this evil distinction between
> kernelland and userland.  I don't know how, though.  All I've ever seen
> is moving the barrier around and changing the granularity -- on a Lisp
> machine, if I understand correctly, the `kernel' was the hardware
> itself, which made sure pointers weren't stored as integers and vice
> versa, and did bounds-checking on arrays.  (Is this correct?)
> When something is `in the kernel', it is something user programs cannot
> avoid using in some circumstances.  Access to I/O and to memory are two
> examples.

It seems to me off hand, that the kernel then, is that which
implements the Scheme (or Lisp) language. Sure, it will work
differently to normal Scheme implementations, but the Scheme
language doesn't give the user the ability to do nasty things
like pointer arithmetic and other nasty stuff. From the users
point of view, he will be merely using a Scheme implementation,
albeit one that implements multiple threads and stuff.

The other big question that arises is whether and how to support
non-Scheme programs. That is where the debate starts as to
whether UNIX should run underneath LispOS in order to support C
apps (and provide a bootstrap or base system to avoid writing
device drivers).

Chris Bitmead