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のサポート
JavaScriptがメインのリポジトリから独立して進化し、リリースできるように、Protocol BufferのJavaScriptサポートに関するいくつかの変更を行いました。具体的には、言語サポートをメインプロジェクトから切り離し、独自のリポジトリに移動しました。
Protocol BuffersのJavaScriptサポートに関連して作成したプルリクエストで、まだマージしたいものがある場合は、JavaScriptリポジトリに対してそれらを複製してください。GitHubの課題は自動的に転送されます。