cputney at wiresong.ca
Tue Oct 25 12:34:57 UTC 2005
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."
Because the protocols for making changes are the same, updating
Monticello to use SystemEditor should be pretty easy.
More information about the Packages