|
Boost : |
From: Russell Hind (rh_maillist_at_[hidden])
Date: 2007-01-11 08:02:21
Hi, we've been serializing data to binary archives since serialization
was first released. As such we have collected a lot of data files.
They are serialized using C++Builder 6 and boost-1.32.0.
We're now looking to move to VS 2005 and as such, boost-1.33.1 seems a
much easier solution than trying to get 1.32.0 to run.
But I've had trouble de-serializing archives created with BCB6 and
1.32.0 with VS 2005 and 1.33.1. I've found the problem in time_duration
serialization.
Its serialization was changed between 1.32.0 and 1.33.1 but no version
increment occured. As such, 1.33.1 can't read archives created with
1.32.0 because of this.
A version could be added to 1.33.1 now to check for this, but I guess
this would then break all archives currently written with 1.33.1.
For us, we're trying to move to C# so I guess we will mostly be using
boost for backwards compatibility for the foreseeable future so our
solution is to add a #define to the 1.33.1 header that makes it behave
like 1.32.0 did which enables us to load our files.
But I'm not sure how you would solve this for other users or what to do
before 1.34.0. This situation isn't ideal as can't think of a solution
without breaking compatibility at some point.
But as a last thought, please can people be careful when modifying
serialization functions to keep backwards compatibility. This has taken
quite a while to track down but that isn't nearly as scary as not
being able to move forward to another version of boost without loosing
the ability to load in all our customers data.
Cheers
Russell
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk