The Inbox: Monticello-nice.500.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
4 messages Options
Reply | Threaded
Open this post in threaded view
|

The Inbox: Monticello-nice.500.mcz

commits-2
Nicolas Cellier uploaded a new version of Monticello to project The Inbox:
http://source.squeak.org/inbox/Monticello-nice.500.mcz

==================== Summary ====================

Name: Monticello-nice.500
Author: nice
Time: 10 March 2012, 6:27:05.52 pm
UUID: 432c3785-149a-4822-ace4-e14b1b792dfa
Ancestors: Monticello-bf.496

Use a ReferenceStream rather than a DataStream in #serializeInBinary:
because storing some object require a ReferenceStream
The bug did show up when I added tokens to MCMethodDefinition as shown below

MessageNotUnderstood: DataStream>>insideASegment
10 March 2012 12:52:47.119 am

VM: Mac OS - Smalltalk
Image: Squeak4.3 [latest update: #11916]

SecurityManager state:
Restricted: false
FileAccess: true
SocketAccess: true
Working Dir /Users/nicolas/Smalltalk/Squeak/trunk
Trusted Dir /foobar/tooBar/forSqueak/bogus/
Untrusted Dir /Users/nicolas/Library/Preferences/Croquet/Internet/Untrusted

DataStream(Object)>>doesNotUnderstand: #insideASegment
        Receiver: a DataStream #[9 0 0 0 2 6 10 77 67 83 110 97 112 115 104 111 116 9 0 0 0 4 6 17 79 114 10...etc...
        Arguments and temporary variables:
                aMessage: insideASegment
                exception: MessageNotUnderstood: DataStream>>insideASegment
                resumeValue: nil
        Receiver's instance variables:
                byteStream: a RWBinaryOrTextStream #[9 0 0 0 2 6 10 77 67 83 110 97 112 115 104...etc...
                topCall: nil
                basePos: 0

Character>>objectForDataStream:
        Receiver: $.
DataStream>>nextPut:
        Arguments and temporary variables:
                anObject: $.
[] in DataStream>>nextPutAll:
Array(SequenceableCollection)>>do:
        Receiver: #(#aString #copyUpToLast: $.)
DataStream>>nextPutAll:
DataStream>>writeArray:
        Arguments and temporary variables:
                anArray: #(#aString #copyUpToLast: $.)
DataStream>>nextPut:
        Arguments and temporary variables:
                anObject: #(#aString #copyUpToLast: $.)
[] in DataStream>>nextPutAll:
Array(SequenceableCollection)>>do:
        Receiver: #(#versionNameFromFileName: #aString #'^' #(#aString #copyUpToLast: $.) #copyUpTo: $()
DataStream>>nextPutAll:
        Arguments and temporary variables:
                aCollection: #(#versionNameFromFileName: #aString #'^' #(#aString #copyUpToLast...etc...
DataStream>>writeArray:
        Arguments and temporary variables:
                anArray: #(#versionNameFromFileName: #aString #'^' #(#aString #copyUpToLast: $....etc...
DataStream>>nextPut:
        Arguments and temporary variables:
                anObject: #(#versionNameFromFileName: #aString #'^' #(#aString #copyUpToLast: $...etc...
MCMethodDefinition(Object)>>storeDataOn:
        Receiver: a MCMethodDefinition(MCFileBasedRepository>>versionNameFromFileName:)
        Receiver's instance variables:
                classIsMeta: false
                source: 'versionNameFromFileName: aString
        ^ (aString copyUpToLast: $.) copyUpT...etc...
                category: #'as yet unclassified'
                selector: #versionNameFromFileName:
                className: #MCFileBasedRepository
                timeStamp: 'bf 5/30/2005 22:52'
                tokens: #(#versionNameFromFileName: #aString #'^' #(#aString #copyUpToLast: $.)...etc...
DataStream>>writeInstance:
DataStream>>nextPut:
        Arguments and temporary variables:
                anObject: a MCMethodDefinition(MCFileBasedRepository>>versionNameFromFileName:)...etc...
[] in DataStream>>nextPutAll:
Array(SequenceableCollection)>>do:
DataStream>>nextPutAll:
 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
DataStream>>writeArray:
DataStream>>nextPut:
OrderedCollection(Object)>>storeDataOn:
DataStream>>writeInstance:
DataStream>>nextPut:
MCSnapshot(Object)>>storeDataOn:
DataStream>>writeInstance:
DataStream>>nextPut:
MCMczWriter>>serializeInBinary:
MCMczWriter>>writeSnapshot:
MCMczWriter>>writeDefinitions:
MCMczWriter>>writeVersion:
MCMczWriter class>>fileOut:on:
MCVersion>>fileOutOn:
[] in MCCacheRepository(MCFileBasedRepository)>>basicStoreVersion:
MCCacheRepository(MCDirectoryRepository)>>writeStreamForFileNamed:replace:do:
MCCacheRepository(MCFileBasedRepository)>>writeStreamForFileNamed:do:
MCCacheRepository(MCFileBasedRepository)>>basicStoreVersion:
MCCacheRepository>>basicStoreVersion:
MCCacheRepository(MCRepository)>>storeVersion:
MCVersion>>addToCache
MCVersion>>initializeWithPackage:info:snapshot:dependencies:
MCVersion class>>package:info:snapshot:dependencies:
MCMczReader(MCVersionReader)>>basicVersion
MCMczReader(MCVersionReader)>>version
[] in MCHttpRepository(MCFileBasedRepository)>>loadVersionFromFileNamed:
BlockClosure>>cull:
MCMczReader(ProtoObject)>>ifNotNil:
MCHttpRepository>>versionReaderForFileNamed:do:
MCHttpRepository(MCFileBasedRepository)>>loadVersionFromFileNamed:
[] in MCHttpRepository(MCFileBasedRepository)>>versionNamed:
Dictionary>>at:ifAbsent:
MCHttpRepository(MCFileBasedRepository)>>versionNamed:
[] in MCFileRepositoryInspector(MCRepositoryInspector)>>version
BlockClosure>>ensure:
CursorWithMask(Cursor)>>showWhile:
MCFileRepositoryInspector(MCRepositoryInspector)>>version
MCFileRepositoryInspector(MCVersionInspector)>>merge
MCFileRepositoryInspector(MCRepositoryInspector)>>merge
PluggableButtonMorphPlus(PluggableButtonMorph)>>performAction

=============== Diff against Monticello-bf.496 ===============

Item was removed:
- SystemOrganization addCategory: #Monticello!
- SystemOrganization addCategory: #'Monticello-Base'!
- SystemOrganization addCategory: #'Monticello-Chunk Format'!
- SystemOrganization addCategory: #'Monticello-Loading'!
- SystemOrganization addCategory: #'Monticello-Merging'!
- SystemOrganization addCategory: #'Monticello-Modeling'!
- SystemOrganization addCategory: #'Monticello-Patching'!
- SystemOrganization addCategory: #'Monticello-Repositories'!
- SystemOrganization addCategory: #'Monticello-Storing'!
- SystemOrganization addCategory: #'Monticello-UI'!
- SystemOrganization addCategory: #'Monticello-Versioning'!
- SystemOrganization addCategory: #'Monticello-Mocks'!
- SystemOrganization addCategory: #'Monticello-Utilities'!

Item was added:
+ SystemOrganization addCategory: #'Monticello-Base'!
+ SystemOrganization addCategory: #'Monticello-Chunk Format'!
+ SystemOrganization addCategory: #'Monticello-Loading'!
+ SystemOrganization addCategory: #'Monticello-Merging'!
+ SystemOrganization addCategory: #'Monticello-Modeling'!
+ SystemOrganization addCategory: #'Monticello-Patching'!
+ SystemOrganization addCategory: #'Monticello-Repositories'!
+ SystemOrganization addCategory: #'Monticello-Storing'!
+ SystemOrganization addCategory: #'Monticello-UI'!
+ SystemOrganization addCategory: #'Monticello-Versioning'!

Item was changed:
  ----- Method: MCMczWriter>>serializeInBinary: (in category 'serializing') -----
  serializeInBinary: aSnapshot
  | writer s |
  s := RWBinaryOrTextStream on: String new.
+ writer := ReferenceStream on: s.
- writer := DataStream on: s.
  writer nextPut: aSnapshot.
  ^ s contents!


Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Monticello-nice.500.mcz

Tobias Pape

Am 2012-03-10 um 17:27 schrieb [hidden email]:

> Nicolas Cellier uploaded a new version of Monticello to project The Inbox:
> http://source.squeak.org/inbox/Monticello-nice.500.mcz
>
> ==================== Summary ====================
>
> Name: Monticello-nice.500
> Author: nice
> Time: 10 March 2012, 6:27:05.52 pm
> UUID: 432c3785-149a-4822-ace4-e14b1b792dfa
> Ancestors: Monticello-bf.496
>
> Use a ReferenceStream rather than a DataStream in #serializeInBinary:
> because storing some object require a ReferenceStream
> The bug did show up when I added tokens to MCMethodDefinition as shown below

Note that this change possibly can break compatibily with Gemstone/Pharo
folks, although I hope, it does not :)

best
        -tobias
Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Monticello-nice.500.mcz

Nicolas Cellier
Le 10 mars 2012 22:45, Tobias Pape <[hidden email]> a écrit :

Am 2012-03-10 um 17:27 schrieb [hidden email]:

> Nicolas Cellier uploaded a new version of Monticello to project The Inbox:
> http://source.squeak.org/inbox/Monticello-nice.500.mcz
>
> ==================== Summary ====================
>
> Name: Monticello-nice.500
> Author: nice
> Time: 10 March 2012, 6:27:05.52 pm
> UUID: 432c3785-149a-4822-ace4-e14b1b792dfa
> Ancestors: Monticello-bf.496
>
> Use a ReferenceStream rather than a DataStream in #serializeInBinary:
> because storing some object require a ReferenceStream
> The bug did show up when I added tokens to MCMethodDefinition as shown below

Note that this change possibly can break compatibily with Gemstone/Pharo
folks, although I hope, it does not :)

best
       -tobias

I don't know...
An alternative would be to define DataStream>>insideASegment ^false
That's just showing how fragile this part of the code is...

Nicolas



Reply | Threaded
Open this post in threaded view
|

Re: The Inbox: Monticello-nice.500.mcz

Tobias Pape

Am 2012-03-11 um 15:10 schrieb Nicolas Cellier:

> Le 10 mars 2012 22:45, Tobias Pape <[hidden email]> a écrit :
>
> Am 2012-03-10 um 17:27 schrieb [hidden email]:
>
> > Nicolas Cellier uploaded a new version of Monticello to project The Inbox:
> > http://source.squeak.org/inbox/Monticello-nice.500.mcz
> >
> > ==================== Summary ====================
> >
> > Name: Monticello-nice.500
> > Author: nice
> > Time: 10 March 2012, 6:27:05.52 pm
> > UUID: 432c3785-149a-4822-ace4-e14b1b792dfa
> > Ancestors: Monticello-bf.496
> >
> > Use a ReferenceStream rather than a DataStream in #serializeInBinary:
> > because storing some object require a ReferenceStream
> > The bug did show up when I added tokens to MCMethodDefinition as shown below
>
> Note that this change possibly can break compatibily with Gemstone/Pharo
> folks, although I hope, it does not :)
>
> best
>        -tobias
>
> I don't know...
> An alternative would be to define DataStream>>insideASegment ^false
> That's just showing how fragile this part of the code is...

I was just mentioning.
 I had weird results when dealing with source code containing
“extended” characters (as extended as an “ can be) and had them
travel between the worlds (Squeak/Gemstone/Pharo in this case).
 I just want to raise the point here, that the whole Monticello implementation
in all three platforms I know is based on the…buggy?… DataStream.
 In fact, that was why I started the Monticello/Fuel thing some month ago,
in the first place.

We just should be aware.

just my 2ct.

Best
        -Tobias