[squeak-dev] At what point did image format change?

Jecel Assumpcao Jr. jecel at merlintec.com
Tue Feb 12 17:55:30 UTC 2013


While David's great explanation about image version numbers perfectly
answers Tim's question given that he is interested in relatively recent
images (3.9 and newer), I'll add one comment about older stuff for
historical completeness.

Eliot has used the version numbers exactly as they were meant to be
used, but previous VM developers were a little more sloppy. The
unofficial policy during the Squeak Central years was that images and
VMs should be compatible at least two versions apart. So a 2.4 VM should
be able to at least work perfectly with 2.2, 2.3, 2.4, 2.5 and 2.6
images. The idea is that nobody would care about anything more than
that, so subtle changes were allowed while keeping the image version
numbers always at 6502.

I am aware of one case of broken backwards compatibility, but have the
impression that there were at least 3 and perhaps more. At some point an
image would change such that some primitive was no longer needed. It
would be left in the VM anyway due to the policy I mentioned above.
Several versions later, some new primitive would be needed for a new
feature in the image. The old primitive number would then be reused. Or
else it would be some field in a system object that would suffer this
fate. In any case, there would be no problems for sufficiently close
versions of VMs and images. And for distant versions it would often seem
that everything was working ok since this tended to happen to rather
obscure features. But eventually this combination would crash.

The problem I mentioned above normally affected only those wanting to
use the Simulator. Other users probably never ran into them, which is
probably why this was considered an acceptable way of doing things.

-- Jecel



More information about the Squeak-dev mailing list