Message Pack[0] is another protocol that follows this very successful simplicity.<p>A leading thought in a lot of this is the &quot;unset and a zero value are equivalent&quot;. It simplifies a lot of what the serializer and deserializers have to understand, and places the burden on code generation or libraries rather than complex serialization. It was unnatural for me to think this way, as I take the opposite for memory (record whether something is set or not, don&#x27;t just assume it equals zero), but on the wire this makes for very compact and backwards compatible messaging.<p>Cap&#x27;n Proto[1] I have not played with, but would love to learn more about to see the advantages and disadvantages between protobuf, msgpack, and capn.<p>[0]: <a href="http:&#x2F;&#x2F;msgpack.org&#x2F;" rel="nofollow">http:&#x2F;&#x2F;msgpack.org&#x2F;</a><p>[1]: <a href="https:&#x2F;&#x2F;capnproto.org&#x2F;" rel="nofollow">https:&#x2F;&#x2F;capnproto.org&#x2F;</a>