About MC for managing the image

Avi Bryant avi.bryant at gmail.com
Sun Sep 18 20:41:45 UTC 2005


On Sep 18, 2005, at 1:29 PM, Andreas Raab wrote:
>>
>> So I'm proposing to have MCConfigs to use simu-load for users and  
>> simu-merge developers, and ignore any specified order. Avi and  
>> have sketched the needed changes out, I'll work on it soon.
>>
>
> Again, please explain "simu-load" and "simu-merge". This discussion  
> is the first I ever heard about it and I just don't know what this  
> means exactly.
>
> But to summarize: Am I correct in understanding that you are  
> proposing to change loading configs in order to use dependencies to  
> create configurations? If not, I fail to see how this last  
> paragraph relates to dependencies ;-)

I think dependencies are actually a red herring: I think we all agree  
that they're broken and that external configs are a better way to  
go.  So let me focus on the "simu-load/merge" stuff.

At its lower levels - the parts that actually load code into the  
image - Monticello doesn't know anything about packages.  All it  
knows is, basically, "there's this set of definitions in the image,  
and this other set of definitions coming from the outside, and I need  
to adjust the image's set so that it matches the external set".   
Merge works the same way "I need to merge the image's set with this  
other set".

Now, the usual case is that the set of definitions in the image  
corresponds to all of the methods currently in the image in a single  
package, and the set of definitions coming in from the outside  
corresponds to those in a single package version file.  But there's  
actually no reason that has to be so: you can throw as many  
definitions into that pool at once as you want.  So the set from the  
image could be the union of the definitions from several packages, as  
could the set coming in from the outside.

Within that pool of definitions, package boundaries are unknown and  
ignored.  The load order is determined for the pool as a whole, using  
the rules I mentioned earlier.  So if you throw a whole bunch of  
packages into the pool, it will figure out a load ordering at method/ 
class granularity, rather than at package granularity.

Concretely, if you look at MCVersion>>load, it boils down to this:

MCVersion>>load
     MCVersionLoader new
         addVersion: aVersion;
         load

If you want to load more than one version at once, you simply need to  
do this:

MCVersionLoader new
    addVersion: versionA;
    addVersion: versionB;
    load

MCVersionMerger works similarly.

What I'm proposing and Daniel is working on is that we modify  
MCConfiguration to use this mechanism rather than an explicit load  
order.

Avi



More information about the Packages mailing list