Проверка совместимости protobuf
Сравните две версии файла .proto и найдите изменения, нарушающие чтение сообщений, уже записанных в двоичном формате или JSON. Для удалённых номеров, изменений типов, переименованных полей и изменений перечислений приводятся пояснения.
Принимает два файла .proto размером до 1 000 000 символов каждый, не более 200 000 токенов, 2 000 сообщений и перечислений, 10 000 полей в сообщении и 32 уровней вложенных сообщений. Сравнение выполняется в фоновом процессе браузера. Можно скачать отчёт JSON и список результатов CSV. Версия, в которой записаны существующие данные. Поместите изменённый файл в New schema. До 1 000 000 символов. Проверьте настройки перед запуском.
Ваш результат
Проверка совместимости protobuf
- Вставьте старый файл .proto в основное поле.
- Вставьте новую версию в поле New schema.
- Запустите проверку и просмотрите результаты, начиная с наиболее серьёзных.
- Скачайте отчёт JSON или список CSV.
Что нужно знать
Принимает два файла .proto размером до 1 000 000 символов каждый, не более 200 000 токенов, 2 000 сообщений и перечислений, 10 000 полей в сообщении и 32 уровней вложенных сообщений. Сравнение выполняется в фоновом процессе браузера. Можно скачать отчёт JSON и список результатов CSV.
Уровни серьёзности
Нарушение совместимости означает, что старые и новые программы могут неверно прочитать двоичные сообщения: удалено поле без резервирования номера, повторно использован номер из зарезервированного диапазона, изменён тип с другим двоичным представлением, одиночное поле стало повторяемым или наоборот, удалено сообщение или перечисление либо перенумеровано значение перечисления. Нарушение совместимости JSON означает, что двоичные данные по-прежнему работают, но меняется формат JSON или текста, например после переименования поля или значения перечисления. Предупреждения касаются изменений, сохраняющих двоичную совместимость, но способных усечь или иначе интерпретировать значения, например int32 в int64 или перемещение поля в oneof и обратно.
Принцип сравнения
Сообщения и перечисления сопоставляются по имени без пакета, а поля — по номеру, согласно правилам обновления типа сообщения из руководства protobuf. Также сравниваются вложенные сообщения и перечисления.
Что не поддерживается
Парсер читает файлы proto2 и proto3 с сообщениями, перечислениями, oneof, картами, вложенными типами, зарезервированными номерами и именами и параметрами полей. Импорты перечисляются, но не разрешаются, поэтому типы из других файлов сравниваются только по имени. Editions, группы и расширения отклоняются. Сервисы пропускаются.