2022年5月6日に発表された変更
バージョニング
Protocol Buffers の言語固有の部分へのより迅速な更新を可能にするために、バージョニングスキームを変更しました。新しいスキームでは、各言語は独自のメジャーバージョンを持ち、他の言語とは独立してインクリメントできます。これについては、後の Python リリースに関するトピックで説明します。ただし、マイナーバージョンとパッチバージョンは引き続き連動します。これにより、破壊的な変更が発生しない言語でメジャーバージョンを上げる必要なく、一部の言語に破壊的な変更を導入できます。
この新しいバージョニングスキームの最初の例は、先行バージョン 3.20.1 に続く、Python API の新バージョン 4.21.0 です。他の言語 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 issue は自動的に転送されます。