The main question I would have is why use it instead of protobuf? Having native support for binary values aside.
I’d love to see benchmarks testing the two, and out of curiosity also including compressed JSON docs to take into account the impact of payload volume.
Nevertheless, I think there are two major features that differentiate protobuff and fleece, which are:
- fleece is implemented as an appendable data structure, which might open the door to some usages,
- protobuf supports more data types than the ones supported by JSON, which may be a good or bad thing depending on the perspective.
In the end, if the world survived with XML for so long, I’d guess we can live with minor gains just as easily.
“Appendable” seems like a positive spin on the “truncated YAML-file is frighteningly often valid” problem…
Of lambdabuffers for that matter.
What’s the difference between this and CBOR?
This post leads me to piggyback and see what people think of lambdabuffers (which are not my work but something I became aware of through the Haskell community).
I don’t have much experience with similar tools but that looks quite interesting, thanks for sharing!
Q: Why the name “Fleece”?
A: It’s a reference to the mythical Golden Fleece, the treasure sought by Jason [emphasis mine] and the Argonauts.
I see what you did there…
Interesting. A year ago I was looking for something exactly like this for distributing data between multiple servers. Everything required a ton of overhead or was too big to use. I ended up just using json. I did discover that Brotli can compress 3 gigs of json down into just 70 megs nearly instantly.