[squeak-dev] Bootstrap (was Smalltalk for small projects only)

Frank Shearar frank.shearar at gmail.com
Wed Feb 1 10:40:07 UTC 2012

On 1 February 2012 03:55, Chris Cunnington
<smalltalktelevision at gmail.com> wrote:
> "If you compare building an automated bootstrap for Smalltalk
> (I just did one for Newspeak over the last few days)"
> Hi Eliot,
> If you could say something about this bootstrap for Newspeak, it would
> better inform Squeak's development.
> Or at lease better inform this apparatchik. :)
> http://lists.squeakfoundation.org/pipermail/squeak-dev/2010-December/155965.html
> http://lists.squeakfoundation.org/pipermail/squeak-dev/2010-December/155981.html
> Clearly, you are not a fan of an image bootstrapped from external files
> using an external compiler.
> How is what you just did for Newspeak different?
> " In Squeak the FFI, file system
> and external process interfaces are really weak.  A good challenge would be
> to reimplement ANT (a Java application) in Squeak/Pharo."
> Apache Ant. A build tool. We use CMake. A build tool for making vms.
> I want to ask a question here, but I cannot, because I cannot see how that
> relates to FFI.
> I'm tempted to say you mean a build tool written in Smalltalk to grow  a
> bootstrap nubbin...

We do: it's called Metacello [1]. It lets you
* describe the (acyclic!) dependency graph between your packages
* describe what versions of those packages make up your versioned release
* describe your external dependencies
* bootstrap the whole lot, loading transitive dependencies.

There are a few wrinkles in it, as with everything - things don't work
perfectly (yet) in an offline environment - but Dale Henrichs welcomes
bug reports/fixes and is actively maintaining the project.

The only things that I don't particularly like about Metacello at the moment are
* the description's in Smalltalk, a Turing complete language. It
requires (not a lot of) discipline not to make your build crazily
parameterised and unrepeatable.
* you have inessential artifacts - your ConfigurationOfFoo packages +
classes - in your image because Metacello builds from the inside of an

The latter's easily addressable by turning your ConfigurationOfFoo
into an Installer script and using that as a startup script for a
blank/default image.


[1] http://code.google.com/p/metacello/

More information about the Squeak-dev mailing list