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 silicon 用のプリビルド済みバイナリモジュールも含まれており、手動でのビルドなしでパフォーマンスが向上します。
新しいリリースには、いくつかの破壊的変更が含まれています。具体的には、
- 暗黙的に作成されたクラスに依存していた
UnknownFields()
メソッドは、明示的に作成されたUnknownFieldSet
クラスに置き換えられました。 - 特定の文字列の形式やエラーメッセージなど、コアではない特性の一部が変更されている可能性があります。これらは破壊的変更とは見なされませんが、既存のコードベースに影響を与える可能性があります。
- Python と C++ 間でのメッセージ共有に依存するアプリケーションは、新バージョンで動作しなくなります。ほとんどの開発者はこれによる影響を受けませんが、Nucleus およびおそらく他のライブラリのユーザーは影響を受ける可能性があります。回避策として、ライブラリに互換性を保持させるように環境変数を設定できます。
- Python upb は、protoc 3.19.0 以降から生成されたコードを必要とします。
JavaScript サポート
Protocol Buffers の JavaScript サポートに関して、JavaScript がメインリポジトリから独立して進化・リリースできるように、いくつかの変更を行いました。具体的には、言語サポートをメインプロジェクトから分離し、独自のレポジトリに移動しました。
Protocol Buffers の JavaScript サポートに関連するプルリクエストを作成済みで、それでもマージしたい場合は、JavaScript レポジトリに対してそれらを再作成してください。GitHub の Issue は自動的に転送されます。