[squeak-dev] Monticello compatibility (was Re: Newbie Questions)

Bert Freudenberg bert at freudenbergs.de
Wed Mar 25 11:52:27 UTC 2009


On 25.03.2009, at 12:05, Keith Hodges wrote:
> The original MC1 made no effort to make anything compatible with
> anything else. It uses a simple binary storeOn: so save its binary  
> data.
> This means that if you add an instance variable to any class in MC1's
> model, your packages are incompatible with past MC1's  This is what
> happened, the MC in 3.9 added support for traits, and so packages  
> saved,
> with that MC are incompatible with previous MC's.

Well, actually, in MC1 the binary snapshot was nothing than a speed  
optimization. It stored the source code as text, too. If the binary  
snapshot loading failed, it fell back to parsing the source. Has this  
changed?

> MC1.5 knows about this, and if a model class is realised with have  
> extra
> data items, that it does not have inst vars for, it pops them into a
> properties dictionary. Also, MC1.5 makes an effort to only save the
> minimum amounts of instVars, so if your class does not have any Traits
> it saves, only the non-trait oriented inst-vars, and in doing so in
> theory the packages it generates should be compatible with even the
> older non 3.9 MC's.
>
> The original MC1 was very naive about handling errors. It would simply
> retry anything that raised an error. There were a number of situations
> that it did not handle well, such as renaming or re-ordering of inst  
> vars.

Indeed. Or annoying issues like not sorting class vars leading to  
spurious conflicts.

> MC1.5 takes a much more considered approach. It attempts to actually
> make the class definition compatible with both the before and after
> situations, when loading methods. Obviously this is not always  
> possible.
>
> In theory MC1.5 should handle more of the difficult cases, than MC1.0
> did. However that doesn't stop people blaming MC1.5 if a package  
> doesnt
> load, and they may find that the old MC1.0 can handle it using its old
> brute force approach.
>
> Finally MC1.6 with atomic loading is really cool, its over 3 times
> faster, which for something the size of Magma is a big deal. (However
> last time I tried it there was a minor bug)


Sounds rather nice. Wish I could spend more time playing with it. I  
have a question though:

How does the Installer-based 3.11 development style go together with  
Monticello packages? Wouldn't every bug fix installed per changeset  
from Mantis make the packages dirty?

- Bert -





More information about the Squeak-dev mailing list