protobuf
Googleによって開発されたインターフェース定義によるバイナリエンコーディングライブラリ。
フィールド名のエイリアスとして扱うフィールドタグ(数値)によってバイトを節約している。
フィールドタグによる互換性に関する仕様の要点は以下。
- フィールドの追加
- 未使用のタグ番号を割り当てることで前方互換あり
- 必須でなければ後方互換あり
- フィールドの変更
- フィールド名の変更は前方・後方互換あり
- フィールドの削除
- 追加時の前方・後方と逆
またProtocol Buffersはフィールド制約である optional
と repeated
間の互換性にも対応している。これはバイナリ上でフィールド情報を単純に複数回並べているため。