DeltaStreams small update

Michael Lucas-Smith mlucas-smith at cincom.com
Thu Aug 23 13:30:06 UTC 2007


Klaus D. Witzel wrote:
> Hi Göran,
>
> I refer to your proposed Delta File Format, with your remarks Human 
> readable? encoding , (utf8? BOM or no BOM?) (put encoding in header?) 
> and the Method Source preamble.
>
> Can I suggest to consider a small XML-parseable format, which is so 
> flat that it is easy to parse by just the two methods #upTo: and 
> #scanTokens: (perhaps assisted by #replaceAll: $" with: $' and 
> #utf8ToIso).
>
> This way Deltas could perfectly be used in other markedup docs, for 
> example with xhtml. Also transport (http+friends) and transfer 
> encoding can be handled by existing (hope so :) protocols. It would 
> look like
>
VisualWorks has an XML file out format that is the default. It has 
brought the product no discernable advantage except that it is aware of 
packages, properties etc that were never added to the standard bang 
fileout format (which was an oversight by someone at some point in the 
past).

At one point there was some fevered excitement over the idea of 
presenting smalltalk xml fileouts using XSLT to make XHTML.. but at the 
end of the day, the outcome was hardly spectacular - you could generate 
something far more interesting directly from the image and make it 
interactive with seaside, for example.

As to human readable - well.. let's just say XML leaves a lot to be 
desired there :) I'd much rather see pure message sends going on here, eg:

self encoding: #utf8.
self class: 'SuperDeltaObject' superclass: 'Object' do: [
    self instanceVariables: #(a b c).
    self comment: 'uhm, what class comment ;-)'.
    self method: 'with:do:' category: '--all--' timestamp: '8/23/2004 
14:41' author: 'st' body: [
       ^this perform: that
    ].
    self classMethod: 'initialize' category: 'class initialization' 
timestamp: '8/23/2004 14:42' author: 'st' body: [
    ].
]

I'm sure there would be plenty of debate on the actual methods used to 
build things, mode versus scope and things like that.. all worthwhile. 
But the beauty of it is that it doesn't introduce a non-smalltalk syntax 
such as the bangs or xml.

Just my 2c. I've got a library in VW that does most of this. I'm sure 
the technique could be ported fairly readily.

Michael
> <?xml version="1.0" encoding="UTF-8"?><... 
> st:xmlns="http://www.squeak.org/2007/deltaFileFormat">
> <st:class name="SuperDeltaObject" superclass="Object" dialect="Squeak">
>  <st:classcomment /> <!--uhm, what class comment ;-) -->
>  <st:method selector="with:do:" category="--all--" 
> timestamp="8/23/2004 14:41" author="st">
> with: this do: that
>  ^ this perform: that
>  </st:method>
>  <st:metaclass instvars="">
>   <st:method selector="initialize" category="class initialization" 
> timestamp="8/23/2004 14:42" author="st">
> initialize
>  </st:method>
>  </st:metaclass>
> </st:class></...>
>
> All the not explicitly mentioned attributes can have an intuitive 
> default (like format="fixed" and instvars="", etc) and complex 
> attributes (like oldinstvarorder="c b a") can be ignored by simple 
> readers.
>
> It looks a bit wordy but, what do you think?
>
> /Klaus
>
> On Tue, 21 Aug 2007 03:01:45 +0200, <goran at krampe.se> wrote:
>
>> Hi all!
>>
>> Ok, managed to get some more code written tonight - but I am still on a
>> low level here - matching up with ChangeSet etc. But if anyone wants to
>> join in:
>>
>>     See details here: http://wiki.squeak.org/squeak/6001
>>
>> The first goal is to make DSDelta work as a "true log" capturing all
>> changes in full detail.
>>
>> One question for you gurus out there - do we care about changing the
>> ORDER of say instvars?
>>
>> regards, Göran
>>
>>
>
>
>




More information about the Squeak-dev mailing list