Using Monticello and SqueakSource and distributing packages

Colin Putney cputney at wiresong.ca
Tue Feb 17 21:40:34 UTC 2004


On Feb 17, 2004, at 4:08 PM, Avi Bryant wrote:

>> Good question. One of the methods in VMMaker is #touch  which is sent 
>> as part of the noteCompilationOf:isMeta: override in 
>> InterpreterPlugin. Because this got filed out in advance of the 
>> implementation of #touch, I used a sar preamble to add a dummy #touch 
>> to Object, then removed it in the postscript. You may be able to 
>> suggest an alternative to this. I imagine filein ordering must have 
>> been an issue somewhere in your MC experience.
>
> Monticello has a fairly generalized ordering system where each 
> definition can provide a list of symbols/classes/whatever that it 
> "provides" as well as a list that it "requires", and MC will make sure 
> that things aren't loaded until all their requirements are provided.  
> So the trick would be to somehow annotate #noteCompilationOf: that it 
> required #touch, so that the ordering would happen correctly.  Every 
> time I bring up method annotations somebody complains, but if anyone 
> can suggest a generally acceptable mechanism of recording this 
> information I will happily build it into MC.

That sort of thing really shouldn't be necessary though. It's only an 
issue in this case because #noteCompilationOf:meta: is a compiler hook; 
normally the compilation of methods doesn't depend on other methods 
already being present.

And here we find ourselves wading into deep water, because the proper 
way to handle this is as much a matter of philosophy as anything else. 
With Monticello, we've tried to walk a middle ground between the 
imperative and declarative approaches, but this is one area where we'll 
have to make a choice: a snapshot is either a program that bootstraps 
its self into existence or it's an inert description of a program that 
requires another program to load and run it.

If we opt for the former, we need to special case 
#noteCompilationOf:meta: (and other such meta-level hooks) so that it 
gets loaded first, and can participate in the loading of the rest of 
the snapshot.

If the latter, we need to move toward atomic loading of snapshots, with 
carefully defined semantics for initialization and finalization.

<sigh> ... and this is all a digression from the problem at hand. I 
guess I really need to look at VMMaker its self to understand the 
issues here. Maybe it's just a matter of slightly different programming 
practices being required when you change your tools.

Colin






More information about the Squeak-dev mailing list