1

Одним из пунктов продажи Protobuf была обратная совместимость, то есть разработчики могут развить формат, и более старые клиенты все еще могут его использовать.Обратная совместимость Protobuf и proto3 vs proto2

Теперь с новой версией Protobuf, называемой proto3, сам язык IDL несовместим как такие вещи, как options, required, где отбрасывается новый синтаксис для enuns, без расширения.

Означает ли это, что с помощью proto3 невозможно создать двоичный файл, который старый proto2 мог бы читать и понимать?

Как будто вам нужно продолжать использовать proto2. Если вы начнете использовать proto3, вы не сможете разговаривать с более старыми системами или переписывать, перекомпилировать все эти .proto s . Это разрыв совместимости в первую очередь.

ответ

2

Да, если некоторые из ваших систем основаны на proto2, вероятно, лучше всего использовать proto2. На мой взгляд, proto3 не представляет много новых функций, и большинство библиотек будут продолжать поддерживать proto2.

Однако формат провода в основном совместим. Пока номер тега тот же, кодировка остается неизменной. Обязательные/необязательные спецификаторы не влияют на кодировку, это только проверки, которые выполняются после декодирования.