Re: [boost] [filesystem][program_options][serialization][test]fromcomp.lang.c++

David Abrahams wrote:
bwood <brass@mailvault.com> writes:
David Abrahams wrote:
"Le Chaud Lapin" <unoriginal_usern...@yahoo.com> writes: More than anything in programming, I depend on type to create form.
Versioning implies that types are semi-weak.
If versioning in serialized form implies that, then so do revisions of your type in a version control system. So, basically, once you design a class, it never evolves?
Along the lines of what Lapin is thinking, I think B.Ser's "versioning" support is problematic. For example, consider wanting to move (or delete) a data member out of a type between versions 1.1 and 1.2. B.Ser needs that member to remain in the type in order to support 1.1.
No, you just read it and throw it away.
if (version == 11) { type_of_deleted_member ignored; ar & ignored; }
Wait a minute. The code above looks like you may have focused on deleting a member and not relocating it. "ignored" isn't coming from anywhere else with a 1.1 client and it needs to be stored somewhere. Also if a 1.2 server is sending to a 1.1 client, it doesn't matter whether the member has been deleted or relocated, it still has to send the right thing back. Brian Wood www.webEbenezer.net

bwood wrote:
David Abrahams wrote:
bwood <brass@mailvault.com> writes:
Along the lines of what Lapin is thinking, I think B.Ser's "versioning" support is problematic. For example, consider wanting to move (or delete) a data member out of a type between versions 1.1 and 1.2. B.Ser needs that member to remain in the type in order to support 1.1.
No, you just read it and throw it away.
if (version == 11) { type_of_deleted_member ignored; ar & ignored; }
Wait a minute. The code above looks like you may have focused on deleting a member and not relocating it. "ignored" isn't coming from anywhere else with a 1.1 client and it needs to be stored somewhere. Also if a 1.2 server is sending to a 1.1 client, it doesn't matter whether the member has been deleted or relocated, it still has to send the right thing back.
This is an inherent property of the communication between an 1.2 server and an 1.1 client; any versioning system would have this problem. If you want to talk to 1.1 code, you have to be able to produce 1.1 data. This is true even if the underlying serialization layer doesn't support versioning at all, it just makes it harder for you.
participants (2)
-
bwood
-
Peter Dimov