Protobuf

Protobuf (Protocol Buffers) is a Google system for serialization of data to/from binary files. It is used by creating data structure definitions (known as "messages", since they define what data is sent or received as a message between processes using this format) in .proto files, which have a syntax resembling programming languages of the C family, and then compiling them using a Protobuf compiler targeting a particular programming language (e.g., C++). This generates library routines which convert data of that particular structure to and from streams of binary data that can be read from and written to files or transmitted over networks. This is faster and more compact than using other popular techniques such as XML. The .pb extension is used for raw binary streams of this format.

Google uses it heavily in its internal protocols and file formats. It is also used (compressed under a variant of Snappy) in the IWA format used by Apple as part of the iWork format used in Pages, Numbers, and Keynote.

Links

 * Official page
 * Developer guide
 * Discussion group
 * Tutorials
 * Binary encoding structure

Commentary and criticism

 * Protobuffers Are Wrong