xxvi Preface
Eventually my Emacs window decides it’s time to close up for the
day.
What has happened? Two things, apparently. One is that when I cre-
ated my custom patch to the window system, to send mouse clicks to
Emacs, I created another massive 3/4 megabyte binary, which
doesn’t share space with the standard Sun window applications
(“tools”).
This means that instead of one huge mass of shared object code run-
ning the window system, and taking up space on my paging disk, I
had two such huge masses, identical except for a few pages of code.
So I paid a megabyte of swap space for the privilege of using a
mouse with my editor. (Emacs itself is a third large mass.)
The Sun kernel was just plain running out of room. Every trivial hack
you make to the window system replicates the entire window system.
But that’s not all: Apparently there are other behemoths of the swap
volume. There are some network things with truly stupendous-sized
data segments. Moreover, they grow over time, eventually taking
over the entire swap volume, I suppose. So you can’t leave a Sun up
for very long. That’s why I’m glad Suns are easy to boot!
But why should a network server grow over time? You’ve got to
realize that the Sun software dynamically allocates very complex
data structures. You are supposed to call “free” on every structure
you have allocated, but it’s understandable that a little garbage
escapes now and then because of programmer oversight. Or pro-
grammer apathy. So eventually the swap volume fills up! This leads
me to daydream about a workstation architecture optimized for the
creation and manipulation of large, complex, interconnected data
structures, and some magic means of freeing storage without pro-
grammer intervention. Such a workstation could stay up for days,
reclaiming its own garbage, without need for costly booting opera-
tions.
But, of course, Suns are very good at booting! So good, they some-
times spontaneously boot, just to let you know they’re in peak form!
Well, the console just complained about the lack of memory again.
Gosh, there isn’t time to talk about the other LispM features I’ve
been free of for the last week. Such as incremental recompilation and
loading. Or incremental testing of programs, from a Lisp Listener. Or
a window system you can actually teach new things (I miss my