A program I wrote using the Boost serialization library trips up when communicating with instances of itself on hosts with different versions of the library.

terminate called after throwing an instance of 'boost::archive::archive_exception'
  what():  unsupported version

It's not reasonable to require that users of my software upgrade their hosts in lock step with each other, all at once or not at all.  But library skew on the order of a bit over two years at least (consider users of Ubuntu LTS) arises naturally and quite often.  I think the solution would be for boost serialize to offer an API point that says "write with binary protocol n", which leaves the library free to read with any protocol it knows.  When I feel that n+1 has existed for long enough, I can tell my program to use n+1.  Unfortunately, and I'd like to be shown wrong, I don't think the library provides such an API point.

Any feedback or suggestions other than not using boost for serialization?

Jeff Abrahamson

http://jeff.purple.com/
http://blog.purple.com/jeff/