How removing a class can broke DataStream/ReferenceStream/SmartRefStream

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

How removing a class can broke DataStream/ReferenceStream/SmartRefStream

Mariano Martinez Peck
Pharo core version: 12210

In Pharo 1.2, the class SoundBuffer was removed.
DataStream >> initilize
was modified, and just added an Smalltalk at: ifPresent: for such class.
However, this broke DataStream and all its subclasses.

This is because DataStream is chryptic, impossible to understand, and impossible to change.

The changed affected when trying to write compiled methods (just by chance, because they were after in the list, of SoundBuffer).

I've spent 3 hours to fix this bug grrrrr



Fix in Inbox:

Name: SLICE-Issue-3147-RomovingSoundBufferBrokeDataStream-MarianoMartinezPeck.1
Author: MarianoMartinezPeck
Time: 23 October 2010, 10:07:35 pm
UUID: c4f1cf01-b8b8-471d-b3c2-e67bdf08d8e5
Ancestors:
Dependencies: System-Object Storage-MarianoMartinezPeck.112

Fix to issue 3147

_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project
Reply | Threaded
Open this post in threaded view
|

Re: How removing a class can broke DataStream/ReferenceStream/SmartRefStream

Schwab,Wilhelm K
SmartReferenceStream is indeed complicated, but it is also poorly designed.  Dolphin's binary filer intuitively places versioning (of the serialized data streams) on the class side of each serialzed class or a proxy for same.  The result is that the filer itself does not change as the classes it marshals change shape, nor does it try to think for the user and programmer or ask end users to debug conversion problems.  If you think things are bad now, wait until you start stepping on Stef's and Sig's changes (for example purposes only) to the filer.

SIXX tackles some of this, but I have yet to run into it, perhaps in part because it seems to work more by messages/aspects than by instance variables as Dolphin's filer.  It is very possible that I have yet to push SIXX far enough to see problems, but I recommend having a look at it.


________________________________________
From: [hidden email] [[hidden email]] On Behalf Of Mariano Martinez Peck [[hidden email]]
Sent: Saturday, October 23, 2010 4:08 PM
To: Pharo Development
Subject: [Pharo-project] How removing a class can broke DataStream/ReferenceStream/SmartRefStream

Pharo core version: 12210

In Pharo 1.2, the class SoundBuffer was removed.
 DataStream >> initilize
was modified, and just added an Smalltalk at: ifPresent: for such class.
However, this broke DataStream and all its subclasses.


This is because DataStream is chryptic, impossible to understand, and impossible to change.

The changed affected when trying to write compiled methods (just by chance, because they were after in the list, of SoundBuffer).


I've spent 3 hours to fix this bug grrrrr



Fix in Inbox:

Name: SLICE-Issue-3147-RomovingSoundBufferBrokeDataStream-MarianoMartinezPeck.1
Author: MarianoMartinezPeck
Time: 23 October 2010, 10:07:35 pm

UUID: c4f1cf01-b8b8-471d-b3c2-e67bdf08d8e5
Ancestors:
Dependencies: System-Object Storage-MarianoMartinezPeck.112

Fix to issue 3147<http://code.google.com/p/pharo/issues/detail?id=3147>




_______________________________________________
Pharo-project mailing list
[hidden email]
http://lists.gforge.inria.fr/cgi-bin/mailman/listinfo/pharo-project