The purpose is roughly the same, if I understand correctly. This "fingerprint" notion is copied from Uri Laserson's perf branch to avoid recomputation of evolution decisions (to "to cache encoder and decoder objects", quoting the spec).
This delta does most of the "parsing canonical form" part of the spec, if I understand correctly, but should be reviewed in light of that, for sure.
I've found Uri's work on this useful to support Cython extensions, but adapting the Python decoder and encoder to cache those encoders and decoders is a pretty big change. I thought this one bit should be safe enough to include without requiring a 1.8.0 bump, so I pushed it forward as a proposal.