Sunday, March 06, 2011

Birth of a Smalltalk image

A Smalltalk image is a file where all the objects are persisted (similar to an OO-database). You can at any point in time save the state of your object world to continue later - for instance continue debugging a problem the next day. The image concept is often confusing for people who are used to building a program by compiling source files to a binary.

An image is typically maintained over years - and it is possible that some of the objects within a smalltalk image live there since Smalltalk-80.

An image can grow in size over time and sometimes one starts to load code/objects into a smaller one to create a new clean image file for daily work.

At Pharo-Project we currently have a PharoCore image that is cleaned up day by day and that is used to build the Pharo-dev ("Pharo") Smalltalk distribution. Pavel also worked on a much smaller kernel (Pharo Kernel project) by throwing out more classes. I already reported about his work.

However - all these were built by stripping an existing image.

Benjamin (with the help of Igor) now created a new Smalltalk kernel ("Hazel") based on Pharo. The new born weight 2.2Mb and includes 230 classes. It is just beeping to prove that the image is living. Read about it here. Congratulations to the new born ...

Combined with more VM support in the future this will allow for small kernel images that provide textual interactivity (replace your bash with Smalltalk scripts, ...) or small webserver images, etc.

Due to the reduced size these images have less tool support (no IDE as you will find in any typical Smalltalk image) - so it will become important to reactivate the InterpreterSimulator project. With this small tool you can run a Smalltalk image within a Smalltalk image and trace the processing. Pavel already started to work on this. Interesting ...

No comments: