I am looking for a C++ serialization library/framework with these features:
1. Binary: Space efficient binary format.
2. Programming language independent: Should have an implementation in most common popular programming languages.
3. Portable across platforms: Should be able to write a file on a FreeBSD web server and be able to read that same file on an Android device.
4. Open format: The format of the generated files should be well documented.
5. Clearly declared file structure: There should be a way to put down the file structure in one place and track changes to it.
6. Non-intrusive: Users of the library must not be required to make changes to existing data-structures that they want to serialize/deserialize. For example, I should not be required to derive my class from a “Serializable” class.
7. Large files: Should work fine for files several GB in size.
With the current state of the art, this is what is on offer:
Feature | protobuf | boost::serialization | MFC |
---|---|---|---|
Binary | Y | Y | Y |
Programming Language Independent | Y | ? | N |
Portable across platforms | Y | N | N |
Open Format | Y | ? | ? |
Clearly declared file structure | Y | N | N |
Non-intrusive | Y | Y | N |
Large files | N | Y | Y |
Old version of code can read files created by newer versions | Y | N | ? |