On Sun, Jan 17, 2010 at 2:42 PM, David T. Lewis <lewis@mail.msen.com> wrote:

On Sun, Jan 17, 2010 at 08:02:23PM +0100, Bert Freudenberg wrote:
>
> IIUC the unix 3.10-5 VM is still okay and 3.10-6 changed this. We're sort-of
> lucky that the latest VM package in Fedora is still 3.10-5 (meaning the new
> OLPC OS will still support Scratch) but it is unfortunate that a minor version
> would break this. At least I wasn't aware the closure support does break
> backwards compatibility, and apparently Ian neither, or he would have at
> least made the change in 3.11 (if not 4.x).

Agreed, and with hindsight I'm sorry that I did not communicate the extent
of the changes more clearly. Although to be clear, it was a mistake: I did
not expect that the closure changes would break compatibility with a 2.5
based image, because the primitives indices that we removed had been marked
obsolete for at least five years.

By way of preventing recurrence, the new VM version numbering approach that
Ian has since adopted may help prevent this kind of misunderstanding. The
version number is now based on VMMaker versionString combined with the
Subversion version number, so for example in the case of the closures changes,
the VM version would have gone from 3.9.5-nnnn to 3.10-nnnn (and yes, I should
have made it 3.10.0 rather than 3.10, I'll keep that in mind in the future).

Maintaining backward compatibility as we move towards COG or other VM
enhancements is going to be a challenge, and we'll have to do this
carefully with an eye towards supporting a rather diverse installed base
of Squeak images.

The move to Cog will break backward-compatibility with all pre-closure images as the Cog VM only runs closures. It does not and cannot easily support old BlockContext-based images.  So the issue of backward-compatibility is moot.

The issue is thus one of forward migration.  Applying the closure bootstrap is not an easy process but is one that has been done by others; Juan Vuletich migrated Cuis to closures without any help at all; most impressive.  With a bit of polish an up-to-date version of the bootstrap should be able to take images forward without too much effort.  One needs a VM that runs both closures and old BlockContext, i.e. one of the current clutch of pre-Cog VMs.  One needs a bootstrap that has been updated with the relevant bug-fixes.

best
Eliot


Dave