How much is my Squeak Image like Sourdough bread?

Jecel Assumpcao Jr jecel at merlintec.com
Wed Sep 21 18:30:00 UTC 2005


Austin King wrote on Wed, 21 Sep 2005 09:16:43 -0700
> Greetings Squeakers,
> I am interested in the history of the Squeak 3.8 image.
> 
> Metaphorically how much is my Squeak image like sourdough bread?
> 
> Literally, are there instances of objects that have been living ( or
> allocated ) in the image for 30 years?

Very likely.

> I can see how the individual class and method definitions can be traced
> back, just like libraries in other file based programming languages, but
> the runtime system of the image seems wholly different.

If you create some random object by evaluating an expression in a text
pane, that expression gets saved to the changes file. So it would be
possible to later look through that file and find out the date when that
object was created. Starting with a 3.8 image/changes set you can only
look back as far as Squeak 3.0 since that is when the changes file was
last emptied and the class and method sources moved to SqueakV3.sources.
Perhaps the normal 3.8 has had stuff eliminated from the changes but I
am sure you can find one with the full history. If you need to look
further back, then starting with something like Squeak 2.8 you can go
all the way to 2.0 and so on.

Of course, if you create an object by selecting something from a menu or
pressing a button (to make a new sketchMorph, for example) then there
won't be a historical record of this. The only solution in that case is
to look at older and older images until you get one where that object
didn't exist.
 
> Was the image thrown away during major transitions in VM such as
> Smalltalk-72 -> Smalltalk-80 -> Squeak? If not, how is this transition made?

Smalltalk-74 was the last system built from scratch. See page 24 of the
"green" book.
http://www.iam.unibe.ch/~ducasse/FreeBooks/BitsOfHistory/

The system tracer application was written so it could examine all
objects in an image and write them out to a file. The normal image save
primitive does this too, of course, but the difference is that the
system tracer could apply arbitrary transformations to what it was
saving. So though Smalltalk-76 had many changes compared to -74, its
first image was generated by the system tracer from a -74 image
(actually, from a running system). This process was repeated for the
transition to Smalltalk-78 and again for Smalltalk-80 (which might have
been derived from -76, that isn't clear to me). In 1996 it was used once
more to convert the 16 bit Apple Smalltalk to the 32 bit Squeak image.
And this year there was the transition to the new 64 bit format.

When you save an image and later restore it you probably consider the
objects you see to be the same ones you had before (some text you were
halfway through writing, for example). If the image was generated from
the system tracer, is a transformed version of some object the same
entity you had before? I would say yes, and so that we have some objects
in the current image that were originally created in Smalltalk-74. I was
going to say that cursors were likely candidates for such long lived
objects, but I see that "Cursor initialize" recreates them and it is
unlikely that this has not been executed a few times in Squeak's history
(specially when adding new cursors).

-- Jecel



More information about the Squeak-dev mailing list