Cross posted because I think others may find this discussion useful:
Chris Muller wrote: > Hi Keith, I think the work you did on Level-Playing Field and MC 1.5 > has always sounded fantastic. > >> implemented it. Magma users use a variety of images and Magma needs you >> to have MCConfigurations working. Thats what LevelPlayingField in LPF >> gives you. >> > > So if it makes MC Configurations "work" why do *I* need to use it and > not just those wanting to load Magma via MC Configurations? > > >> Also the issue of extensions to classes that don't exist in older images >> is solved via the orphanage. MC1.5 doesnt complain like MC1 does. >> > > This is again something that happens for those *loading* Magma, so is > there a reason it is needed by the person doing the deployment? And, > if so, and I do, will others who want to load it require MC 1.5 and/or > LPF? > > The reason I have not moved on it after all this time, and I'm almost > ashamed to say it, it has never bubbled up into the realm of > critical-need that exceeded other priorities. Is LPF and MC 1.5 "drop > in and go?", completely compatible with existing mc packages? > > Thanks.. > Chris > 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. 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. 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) thanks for asking the relevant questions. Keith _______________________________________________ Pharo-project mailing list [hidden email] http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project |
Free forum by Nabble | Edit this page |