[squeak-dev] Re: SystemEditor
Colin Putney
cputney at wiresong.ca
Thu Nov 27 05:05:09 UTC 2008
On 26-Nov-08, at 2:53 PM, Andreas Raab <andreas.raab at gmx.de> wrote:
> Hi Colin -
>
> I was looking over SystemEditor and one thing that really surprised
> me was the use of ClassEditors as proxies. What is the reasoning
> behind it? It makes the design difficult to understand and extremely
> hard to debug - I gave up trying to find out what causes the issue
> with class migration when I effectively couldn't debug the editors
> since all they would show me were those pretend-classes. Is there
> some sort of debug mode to turn off all that evil magic? ;-)
The purpose of SystemEditor is to provide a way to atomically apply
changes to the system, using an interface identical to the reflective
interface already in use. The proxies provide protocol compatibility,
while recording the changes, that need to be made. Then, when it's
time to commit, it does all the class building, compiling, instance
migration and so on, and finally installs it atomically with a mass
become.
So the design is aimed at providing easy-to-adopt atomic updates. The
increase in performance is icing, but it makes sense, I guess. Making
a change involves a certain amount of overhead, and making the changes
one by one incurs that overhead for each change. SystemEditor
aggregates changes and can amortize the overhead across several
changes. Monticello 2 benefits from this even more than Monticello1,
because it deals with instance variables individually, and so incurs
migration overhead for each ivar, rather than for each class.
I hear you though. If you think ClassEditor is evil, look at
MetaclassEditor. ;-)
Colin
More information about the Squeak-dev
mailing list
|