Technically speaking, Thrift is "language-independent" serialization-deserialization format with clean approach to backward compatibility.
I think Thrift (or something like that) can be useful, as it can generate serializers/deserializers for lots of languages.
PostgreSQL's "binary" format is tied to the PostgreSQL and it has to be reimplemented for each and every client language.
"text" format is non-trivial as well (e.g. it is hard to get quoting right for structs, and text is server-locale-dependent)