Ответ 1
Они делают это, увеличивая версию в заголовке. Так что да, это совместимо в том смысле, что вы получите изящный сбой, если попытаетесь прочитать двоичные данные, сериализованные с несовместимой версией, как примечания к выпуску 1.45.0 имеют тенденцию указывать. Кроме того, есть ошибки в 1.42 и 1.43, которые нарушают его!
Внутренние двоичные архивы, созданные в версиях 1.42 и 1.43, страдают серьезной проблемой. Вероятно, они не будут читаемы этой последней версией. Это связано с тем, что 1.42 внесли некоторые изменения в двоичный формат некоторых типов. Обычно это можно устранить, обнаружив номер версии библиотеки, записанный в заголовок архива. К сожалению, этот номер версии библиотеки не был увеличен на 1,42, как и следовало ожидать. Итак, теперь у нас есть две разные версии двоичного архива с тем же номером версии библиотеки.
Я лично поставил бы больше веры в Google Protocol Buffers, он явно поддерживает обратную совместимость:
Вы можете добавлять новые поля в свои форматы сообщений, не нарушая обратной совместимости; старые двоичные файлы просто игнорируют новое поле при разборе.
Однако это требует немного больше усилий на стороне системы сборки, поскольку она предполагает использование автоматически сгенерированного кода.