2022年5月6日に発表された変更点
バージョニング
Protocol Buffersの言語固有のコンポーネントをより迅速に更新できるように、バージョニングスキームを変更しました。新しいスキームでは、各言語が独自のメジャーバージョンを持ち、他の言語とは独立して増分することができます。これについては、このトピックの後半でPythonのリリースについて説明します。ただし、マイナーバージョンとパッチバージョンは連携したままです。これにより、破壊的変更を経験しない言語でメジャーバージョンの引き上げを必要とせずに、一部の言語に破壊的変更を導入することができます。
この新しいバージョニングスキームの最初の例は、Python APIの新しいバージョンである4.21.0で、以前のバージョン3.20.1に続くものです。その他の言語APIは3.21.0としてリリースされます。
Pythonの更新
Protocol BuffersのPython言語サポートにいくつかの変更を加えました。バージョン4.21.0は、3.20.1に続く新しいメジャーバージョンです。新しいバージョンはupbライブラリに基づいており、特に大きなペイロードの場合、以前のリリースよりも大幅に優れた解析パフォーマンスを提供します。また、Appleシリコン向けのビルド済みバイナリモジュールも含まれており、手動でビルドすることなくパフォーマンスを向上させます。
新しいリリースには、いくつかの破壊的変更が含まれています。具体的には
- 暗黙的に作成されたクラスに依存していた
UnknownFields()メソッドは、明示的に作成されたUnknownFieldSetクラスに置き換えられました。 - 特定の文字列のフォーマットやエラーメッセージなど、コアではない特性が変更された可能性があります。これらは破壊的変更とは見なされませんが、既存のコードベースに影響を与える可能性があります。
- PythonとC++間でメッセージの共有に依存するアプリケーションは、新しいバージョンでは動作しません。ほとんどの開発者はこれによる影響を受けませんが、Nucleusのユーザー、およびおそらく他のライブラリのユーザーは影響を受ける可能性があります。回避策として、ライブラリに互換性を維持させるために環境変数を設定することができます。
- Python upbは、protoc 3.19.0以降で生成されたコードを必要とします。
JavaScriptのサポート
Protocol BufferのJavaScriptサポートについては、JavaScriptがメインリポジトリから独立して進化しリリースできるように、いくつかの変更を行いました。具体的には、言語サポートをメインプロジェクトから切り離し、独自のリポジトリに移動しました。
Protocol BuffersのJavaScriptサポートに関連して作成したプルリクエストで、まだマージしたいものがある場合は、JavaScriptリポジトリに対してそれらを複製してください。GitHubの課題は自動的に転送されます。