| ▲ | maximilianburke 7 days ago |
| Flatbuffers satisfies those requirements and doesn’t have varint shenanigans. |
|
| ▲ | leoc 7 days ago | parent | next [-] |
| What about Cap’n Proto https://capnproto.org/ ? (Don't know much about these things myself, but it's a name that usually comes up in these discussions.) |
| |
| ▲ | usrnm 6 days ago | parent [-] | | Cap'n'proto is not very nice to work with in C++, and I'd discourage anyone from using it from other programming languages, the implementations are just not there yet. We use both cnp and protobufs at work, and I vastly prefer protobufs, even for C++. I only wish they stayed the hell away from abseil, though. | | |
| ▲ | yencabulator 4 days ago | parent | next [-] | | The developer experience of capnproto is pretty darn miserable. I replaced my Rust use of it with https://rkyv.org/ -- probably the biggest ergonomic improvement was a single validation after which the message is safe to look at, instead of errors on every code path. The biggest downside was loss of built-in per-message schema evolution; in my use case I can have one version number up front. | |
| ▲ | porridgeraisin 6 days ago | parent | prev [-] | | I always thought people had a positive view on abseil, never used it myself other than when tinkering on random projects. What's the main issue? | | |
| ▲ | usrnm 6 days ago | parent [-] | | The thing is a huge pain to manage as a dependency, especially if you wander away from the official google-approved way of doing things. Protobuf went from a breeze to use to the single most common source of build issues in our cross-platform project the moment they added this dependency. It's so bad that many distros and package managers keep the pre-abseil version as a separate package, and many just prefer to get stuck with it rather than upgrade. Same with other google libraries that added abseil as a dependency, as far as I'm aware | | |
| ▲ | mkoubaa 6 days ago | parent | next [-] | | I'd rather they just used the abseil headers they needed with the abseil license at the top than make it a build dependency. The concept of a package is antithetical to C++ and no amount of tooling can fix that. | | | |
| ▲ | jjmarr 6 days ago | parent | prev [-] | | I like abseil besides the compile times. Not having to specialize my own hash when using maps is nice. |
|
|
|
|
|
| ▲ | AYBABTME 6 days ago | parent | prev [-] |
| But you can't trust flatbuffers sent from unknown senders. |