Protocol buffers are a flexible, efficient, automated mechanism for serializing structured data – think XML, but smaller, faster, and simpler. You define how you want your data to be structured once, then you can use special generated source code to easily write and read your structured data to and from a variety of data streams and using a variety of languages. You can even update your data structure without breaking deployed programs that are compiled against the "old" format.and later on that page:
Protocol buffers are now Google's lingua franca for data --- at the time of writing, there are 48,162 different message types defined in the Google code tree across 12,183 .proto files. They're used both in RPC systems and for persistent storage of data in a variety of storage systems.
Protocol Buffers have native support for C++, Java and Python -- via official implementations provided by Google. This binding for R is one of a number of Third Party Addons for languages ranging from pure C to Clojure, Erlang, Haskell, Perl, Ruby and more. But until now, no R.
R> library( RProtoBuf ) ## load the package R> readProtoFiles( "addressbook.proto" ) ## acquire protobuf information R> bob <- new( tutorial.Person, ## create new object + email = "email@example.com", + name = "Bob", + id = 123 ) R> writeLines( bob$toString() ) ## serialize to stdout name: "Bob" id: 123 email: "firstname.lastname@example.org" R> bob$email ## access and/or override  "email@example.com" R> bob$id <- 5 R> bob$id  5 R> serialize( bob, "person.pb" ) ## serialize to compact binary format