There are a couple of reasons I chose FB over Can&#x27;n Proto, Python and full C++ doesn&#x27;t work on MSVC&#x2F;Windows (this might have changed recently especially given the Clang compiler integration into MS backend)<p>Second problem is Capnproto doesn&#x27;t have structs, ie. you want something like 
struct Vec3 {x: float, y: float, z: float} in CapnProto you have to either make Vec3 a ref type (+ pointer size and lookup indirection for each instance) or inline it manually (especially annoying given that you must manually number CapnProto fields, maybe this is a benefit in some use cases but it&#x27;s of no use to me and only creates work).<p>CapnProto is much bigger as well - it includes it&#x27;s own RPC&#x2F;distributed object protocol and library - the serialization part isn&#x27;t separate they are in one library - that&#x27;s taking in <i>a lot</i> of useless code that you would have to figure out if you decided to maintain it.<p>Also worth noting FlatBuffers on Python are actually not that fast because they are pure-python - there are Cython versions in the PR (at least last time I checked) - this doesn&#x27;t matter in my use case but worth pointing out. And the Python API is very very unpythonic (C style API with even the naming completely off from PEP8) compared to CapnProto which is excellent !<p>I needed a cross language typed serialization format for binary files and FlatBuffers is better for that than CapnProto IMO.