[squeak-dev] Re: Creating an image from first principles

Alejandro F. Reimondo aleReimondo at smalltalking.net
Tue Jul 8 14:17:10 UTC 2008


Dear Andreas,

I have used the gestation technique with success in some situations I need
 to change shape of core classes and to build new smalltalk platforms
 before a VM implementation complete (we parasited SqueakVM
 and generate Squeak compatible images to be run and tested
 in customized squeakVM while high perfomance VM was in development).

We used a refactored(modified) version of System Tracer to build
 the image, and once the image is built you can run it with a
 valid VM (e.g. a modified squeakVM) or with a simulator as usual.
The system tracer was adapted to cut/adapt the links from host image
 when saving the image of gestated system.

It was very simple and easy to build a image by gestation. We used
 fileIns in log format but with a minimal change to let us evaluate
 chunks in the context of the builder instead of compile chunk
 in "UndefineObject", to make it possible to express in chunk format
 the booting expressions of the image in gestation; doing that way,
 you do not need to express any behavior/code in the host machine,
 all code that guides the boot process is read from smalltalk files.

We also build some modified browsers and inspectors to let us
 test & modify an image during gestation (before saving the image)
 and to fileOut changes...
We also built some tools to trace activation of methods (in the VM)
 and run them while the image "is in the womb" tracing the methods
 that are required to run... and we implemented a facility to add
 the classes and methods activated from hosting image (a kind of
 nutrition from parent while in gestation).

I has put some (old) resources in my wiki, there is also an image
 there to play with. The image is an old Sq 1.8 or so.
I did not made efforts to port the work to new versions of Squeak,
 but I know that in the past Edgar has used the framework
 for his work (or at least for learning with it)
 and provably he has something near the current version.

The URL of my work is
  http://www.aleReimondo.com.ar/ImageGestation

all the best,
Ale.



----- Original Message ----- 
From: "Andreas Raab" <andreas.raab at gmx.de>
To: "The general-purpose Squeak developers list" 
<squeak-dev at lists.squeakfoundation.org>
Sent: Tuesday, July 08, 2008 2:40 AM
Subject: [squeak-dev] Re: Creating an image from first principles


> Colin Putney wrote:
>> It seems a little more complicated than Alejandro's "gestation" approach, 
>> though. With gestation, the child image is created *inside* the parent 
>> image, carefully avoiding out-pointers. Then the child image is written 
>> out to disk with a system tracer.
>>
>> Something like this is going to be full of subtleties, so maybe 
>> simulation offers benefits that gestation doesn't. Any thoughts?
>
> I don't know enough about that "gestation" approach. How does it work? Can 
> I try it? It doesn't seem immediately obvious to me what the process is 
> like - as an example, where do nil, true, false come from and how are they 
> made to be instances of the class that is inside the child image instead 
> of the parent? How is process initialization handled? If anyone has ever 
> produced an image with the approach I'd be curious to hear more about the 
> experience, what was easy and what was difficult.
>
> Cheers,
>   - Andreas
>
> 





More information about the Squeak-dev mailing list