Testing the waters.

Mike McDonald mikemac@titian.engr.sgi.com
Fri, 09 May 1997 11:18:08 -0700


>Date: Fri, 09 May 1997 17:57:42 +1000
>From: "Chris Bitmead uid(x22068)" <Chris.Bitmead@alcatel.com.au>
>Subject: Re: Testing the waters.
>To: lispos@math.gatech.edu

>>********************** MAXIMIZE PORTABILITY **************************
>
>Ok, hands up everybody who has no idea what an object database is. 

  I think you're missing the point. Not everyone is proposing an
object oriented database as a POS. Some people are proposing a much
more transparent and ubiquitous solution. One might think of is as
persistent swap. Everything that gets allocated gets stored
permanently in the store until it gets GCed. So for instance, if I
type in the following:

=>(setq a (make-instance 'foo))
#<instance foo>
=>(setq b (list 1 2 3))
(1 2 3)

  Then I reboot a thousand times and wait fifteen years. When I type
in:

=>a

  the system comes back with:

#<instance foo>

 and the same thing happens for b:

=>b
(1 2 3)

  You can see that at no time did I say I wanted a and b saved. Since
neither is garbage (in the GC sense), they automaticly get promoted to
the permanent store. In this scheme of things, it's very hard to get
rid of things I don't want kept around. In this example, I'd have to
set a and b to something else (that would then get saved!) or unintern
the two symbols. If I have a complicated data structure that I've
temporarily attached to the system services (say I'm trying out a new
mail filter), it may be nearly impossible for me to remove my filter
when I decide it's the wrong thing. It's just hooked into the system
in too many places for me to find them all. All it takes is one
pointer to keep it around permanently. That's what I don't want.

>I can see someone will have to stand up and explain this in heavy
>detail.
>
>For now I've going home :-)
>

  Mike McDonald
  mikemac@engr.sgi.com