← Back to context

Comment by haberman

5 years ago

From your link:

> Support for Protobuf buffer serialization was a multi-year effort between Microsoft and Google engineers. Changes were spread across multiple repositories.

The implementation being discussed there is the main C# implementation from https://github.com/protocolbuffers/protobuf/tree/master/csha...

I know, the point was that they don't care to improve the C++ version.

  • The C++ parser has been completely rewritten in the last few years to push the current code generation design to its limits. The biggest obstacle in the way of optimizing it further is legacy APIs, especially std::string for string fields, which forces tons of small heap allocations and frees and defeats the benefits of arena allocation.

    Changing very widely used APIs is not easy, these things take time.

    • Interesting, thanks for the clarification, however why do libraries depend on what should be implementation details of generated code to start with?

      Something that by good CI/CD practices shouldn't even be part of checked in code.

      2 replies →

  • haberman is part of the “they” here (he’s on the core protobuf team, does things like this).