3.6 "full" packages

Colin Putney cputney at wiresong.ca
Thu Jul 31 19:02:01 UTC 2003


On Thursday, July 31, 2003, at 08:41  AM, Lex Spoon wrote:

>> Still with the following approach if you have the declarative object
>> you can load a code without installing it. and if you want to have 
>> that
>> with the chunk format for class you have to introduce
>> PseudoClass too. So the question is really what should be the
>> precondition we want in terms of code representation.
>
> True, but things like PseudoClass aren't a big deal to implement and in
> fact someone has already implemented them for Squeak.  People
> overestimate the difficulty of parsing the handfull of chunk-types that
> the a changeset can emit.
>
>> From scratch, your way looks better.

Hi guys,

You seem to be designing a new file format here, but I sort of missed 
the 'why' part. Would you mind explaining the motivation to me?

If you look at a Monticello fileout, (.mc or .mcv, they're quite 
similar), you'll see that we've done something very similar to 
Stephane's proposal. Here's a (reflexive) example:

MCClassDefinition
   name: #MCClassDefinition
   superclassName: #MCDefinition
   category: #'Monticello-Modeling'
   instVarNames: #('name' 'superclassName' 'variables' 'category' 'type' 
'comment' )
   classVarNames: #()
   poolDictionaryNames: #()
   classInstVarNames: #()
   comment: ''!

And yes, we do have the option of treating it declaratively or 
imperatively. Normally Monticello parses it declaratively, and you can 
(among other things) browse the definitions without loading them. We 
also have a small bootstrap loader that just creates the equivalent 
structures in the image.

You're right Lex, that parsing this type of file format isn't very 
difficult. The limiting factor, I think, is that the Squeak runtime 
uses a pretty bare-bones model of Smalltalk code, one that is just 
adequate for running Squeak. This kind of file format is a bit better 
than a regular fileout because the chunks are self contained;  they 
don't rely on, for example, #methodsFor:timestamp: chunks earlier in 
the stream. But semantically, it's exactly equivalent to a regular 
fileout.

There are a lot of things I'd like to do with Monticello that just 
aren't possible (yet) because the code model, whether expressed 
declaratively or imperatively, can't encompass them.

So, depending on what you'd like to accomplish with a new file format, 
it may also be necessary to work on the Squeak runtime.

Colin



More information about the Squeak-dev mailing list