Hacker News new | ask | show | jobs
by moonchrome 1770 days ago
If you're looking for a binary serialisation library that generates simpler/more readable code and doesn't do parsing look into flatbuffers. Going through generated protobuff code in . NET last time I used it was vomit inducing. Flatbuffers don't provide RPC AFAIK so not comparable with gRPC

Capnproto tried to do too much with distributed objects and RPC, I was looking into it years ago but it still seems like the C++ impl is the only one that supports those advanced concepts.

2 comments

For your own sanity, please stay away from Flatbuffers. The key here is 'doesn't do parsing'. I used it, and wound up writing a ton of extract code to unpack things in the way I wanted. Behind the scenes everything in FlatBuffers is stored in a byte array or byte buffer. It can be made to work, but protobuffs worked better for me.

Caveats:

1) I needed to work in C++ and Java

2) I was transporting serialized messages over ZeroMQ

At one point I dug a bit into the python impl of Flatbuffers, and while I forget the exact details, I was struck by how inefficient it looked. Basically every accessor call requires parsing/casting (into python) bytes into objects, without any awareness of whether it had been parsed before.
Apparently at C# implementation supports promise pipelining: https://github.com/c80k/capnproto-dotnetcore#features

It is missing many nice-to-have features however and is also apparently unmaintained, with the last release 16 months ago...

No activity doesn't necessarily mean unmaintained, it could just mean usable and stable/bug-free.