pip/pip-75.md
In the Pulsar wire protocol, we are using Google Protobuf in order to perform serialization/deserialization of the commands that are exchanged between clients and brokers.
Because of the overhead involved with the regular Protobuf implementation, since very early on, we have been using a modified version of Protobuf 2.4.1. The modifications were done to ensure a more efficient serialization code that used thread local caches for the objects used in the process.
There are few issues with the current approach:
Have an efficient and maintainable way to perform serialization/deserialization of Pulsar protocol.
The current proposal is to switch from the patched Protobuf 2.4.1 and use a different code generator, Splunk LightProto: https://github.com/splunk/lightproto.
This code generator has the following features/goals:
There is extensive testing to ensure the generated code serializes and parses the same bytes in the same way as the Google Protobuf does.