[squeak-dev] All Clear (and Monticello issues)

Bert Freudenberg bert at freudenbergs.de
Mon Aug 31 08:07:05 UTC 2009


On 31.08.2009, at 05:56, Andreas Raab wrote:

> Folks -
>
> We're all clear now. The problem with trunk updating was caused by  
> Monticello (more precisely Monticello-rej.309) which attempted to  
> make MC loading atomic but in the process introduced some serious  
> breakage in MC.

Uh, I wasn't even aware our MC version did this. The same version by  
Ralph introduced the bug that not all files are shown in the  
repository browser.

I found a little bit of discussion at

	http://lists.squeakfoundation.org/pipermail/v3dot10/2007-March/000370.html

Glad this kind of discussion would happen on squeak-dev now.

> In short, what the changes did was to first compile new methods and  
> classes and defer installation the newly compiled methods until  
> later. That sounds good at first but only to the point where you  
> realize that methods often need to be recompiled in the process of  
> class definition changes.
>
> In this case, we had various methods in subclasses of  
> CharacterScanner which were updated at the same time as a new  
> variable was added in CharacterScanner (pendingKernX). The process  
> involved compiling some methods with the *old* CharacterScanner  
> definition and some methods with the *new* CharacterScanner  
> definition (depending on whether the method was compiled before or  
> after CharacterScanner's redefinition). As a consequence, when the  
> methods were installed (some of which referred to the old, and some  
> of which referred to the new layout) everything crashed and burned.
>
> I have added a workaround in the form of an extra loading pass in MC  
> that first loads class definitions and then the rest. This gets us  
> past the hurdle but is probably not a proper long-term solution. Any  
> ideas on how to address this issue would be greatly appreciated. At  
> this point I'm leaning towards getting rid of MC's dependency driven  
> load process and replace it with a declarative version that is  
> explicit about what it does (i.e., adding/removing categories,  
> adding/redefining/removing classes, adding/redefining/removing  
> traits, adding/redefining/removing methods etc.) since the current  
> MC version also has the problem that removals now again happen  
> before additions which is yet another problem.
>
> Cheers,
>  - Andreas

I think the SystemEditor in the latest Monticello does pretty much do  
this. Before patching up our old version we should switch to that one.

- Bert -





More information about the Squeak-dev mailing list