The encoding methods for freezing (and corresponding decoding methods for thawing) may be overridden to provide an alternate serialization format. The only requirement of the serialziation format is that it starts with a minimally valid piece of XML that encodes the format and version of the serialized format. The rest of the serialization format need not be XML. This is done because the format and version of the serialized data are required in the stream, and making it XML incoveniences nobody and makes the XML folks happy. It's good enough, and not up for discussion.
Does that mean all encodings will start with the "standard" markup header:
<xml version="1.0"?>
I'm not sure what minimally valid means, but I think this is considerable overhead.
Also, I don't think I like using freeze/thaw format for the standard PBC format if we are embedding XML everywhere, which is ok, but Leo had mentioned that we would use freeze/thaw for loading classes. With XML in the picture I think it becomes too bulky.
If we are to use recursive serialization for classes then we'd end up with fat bytecodes; every field and method would have the XML header.
-Melvin