happytails.ai
Русский

Проверка совместимости protobuf

Сравните две версии файла .proto и найдите изменения, нарушающие чтение сообщений, уже записанных в двоичном формате или JSON. Для удалённых номеров, изменений типов, переименованных полей и изменений перечислений приводятся пояснения.

Принимает два файла .proto размером до 1 000 000 символов каждый, не более 200 000 токенов, 2 000 сообщений и перечислений, 10 000 полей в сообщении и 32 уровней вложенных сообщений. Сравнение выполняется в фоновом процессе браузера. Можно скачать отчёт JSON и список результатов CSV. Версия, в которой записаны существующие данные. Поместите изменённый файл в New schema. До 1 000 000 символов. Проверьте настройки перед запуском.

Ваш результат

Сообщите о проблеме или поделитесь идеей.

Проверка совместимости protobuf
  1. Вставьте старый файл .proto в основное поле.
  2. Вставьте новую версию в поле New schema.
  3. Запустите проверку и просмотрите результаты, начиная с наиболее серьёзных.
  4. Скачайте отчёт 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, группы и расширения отклоняются. Сервисы пропускаются.

Что можно сделать дальше