Hi,

How does Sage solve the following situation? A user stores objects pickled 
in Sage version X.1. Then a developer changes internal logic and data 
structure of the class of the objects for Sage version X.2. If we assume the 
developer's patch is merged to Sage X.2, then typically the user's objects 
fail to be unpickled in Sage X.2. Of course, this is undesirable situation. 
I think this situation is unavoidable as Sage evolves for the better.

As I understand, the standard pickle jar contained in Sage was created for 
the purpose of preventing such a situation. But I could not understand how 
effective it is in what way. I think what happens is: The old pickled 
objects prevent the patch to be merged to Sage X.2 by unpickling failures. 
Then it is up to the developer to find a tricky way to avoid the unpickling 
failures.

I think we should provide some infrastructure for the developer. My proposal 
is to make each objects have an attribute containing the Sage version in 
which it is created. Then of course the object will be pickled with the 
information. On the other hand, the class of the objects should contain 
relevant codes, written by the developer, "translating" the object pickled 
in Sage X.1 to an object of Sage X.2. Sage's unpickling procedure, comparing 
the version of the object and the current Sage version, automatically use 
the translating code to unpickle the objects belonging to previous versions 
to Sage X.2

Simon answered to my similar question earlier. However, his answer was not 
sufficient for me to be satisfied.  It might be the case that I was not 
understood. So I ask the same question, a bit polished, again.


Kwankyu  

-- 
To post to this group, send an email to sage-devel@googlegroups.com
To unsubscribe from this group, send an email to 
sage-devel+unsubscr...@googlegroups.com
For more options, visit this group at http://groups.google.com/group/sage-devel
URL: http://www.sagemath.org

Reply via email to