On Oct 25, 2005, at 5:07 AM, Cees De Groot wrote:
Incidentally, the customer uses VAST with ENVY/Manager. It has a whole slew of warts (more than I care to list here ;-)), but one very nice feature: loads are atomic. Which means that you can cancel a load halfway and nothing has changed in your image. AFAIK, this is missing in MC, not?
Yes, we've wanted to put this in MC for a long time. As it happens, I'm working on a SystemEditor package that will allow tools to make multiple changes to the system and have them take effect atomically. When it's ready, it'll be an important part of MC2, and could be retrofitted into MC1 as well. It might even be worthwhile to think about doing an atomic ChangeSet loader.
As a simple example, Stéphane recently ran into a problem where he tried to load a package that modified Rectangle>>insetBy: so that it called #isRectangle, which is a new method in the same package. With SystemEditor, Monticello wouldn't have to know about the dependency between the two methods; it would do something like this:
"create an editor for the class we want to change." system := SystemEditor new. class := system at: #Rectangle.
"Make changes using the usual protocol." class compile: newVersionOfInsetBy class compile: newMethodIsRectangle
"commit the changes atomically." system commit.
Because the protocols for making changes are the same, updating Monticello to use SystemEditor should be pretty easy.
Colin