バージョン 25.x の新機能のお知らせ

Protocol Buffers バージョン 25.x で発表された変更点。

以下の発表は、2023 年 11 月 1 日にリリースされたバージョン 25.x に特化したものです。時系列の情報については、「ニュース」を参照してください。

Python の互換性のない変更点

v25 では、message.UnknownFields() は純粋な Python および C++ 拡張機能で非推奨になります。v26 で削除されます。代わりに、unknown_fields.py の新しい UnknownFieldSet(message) のサポートを使用してください。

μpb が Protobuf Git リポジトリへ移行

v25 リリースから、μpb は、以前の別のリポジトリの場所ではなく、protobuf リポジトリに移行しました。今後の μpb の開発はすべて新しい場所でのみ行われます。

2 つのリポジトリの統合により、protobuf と μpb の間の固定バージョン依存関係を更新する必要がなくなり、開発プロセスが簡素化され、高速化されます。μpb への変更は、手動でのアップグレード手順なしで、protobuf コードにすぐに反映され、その逆も同様です。

ほとんどのユーザーは、この変更に対応するために、ほとんど、またはまったくアクションをとる必要はないと予想されます。μpb は Ruby、PHP、および Python の実装のエンジンですが、μpb を直接参照するコードがない限り、この変更に気づかないでしょう。

Bazel プロジェクトから μpb を参照している場合、μpb の参照を protobuf を指すように更新する必要があります(たとえば、@upb@com_google_protobuf に置き換えます)。追加の変更の必要性を最小限に抑えるために、μpb のファイルパスと Bazel ターゲットは同じにしていますが、2 つの例外があります。

  • upbc ディレクトリは upb_generator に名前が変更されました。
  • μpb の最上位の BUILD ファイルは upb ディレクトリに移動しました。したがって、たとえば、@upb//:reflection への参照は、@com_google_protobuf//upb:reflection と記述されるようになりました。

Java gencode の問題

3.21.7 リリースより前に作成された Java gencode を破損させる変更を 25.x ブランチにパッチ適用します。その後、3.21.7 から 3.25.5 までのすべてのバージョンの Java protobuf を footmitten CVE に対して脆弱であるとマークします。

この変更がパッチ適用された後、システムプロパティ「-Dcom.google.protobuf.use_unsafe_pre22_gencode」を設定しない限り、protobuf は makeExtensionsImmutable メソッドから UnsupportedOperationException をスローします。このシステムプロパティを使用すると、すぐにコードを更新できない場合に時間を稼ぐことができますが、短期的な回避策と考えるべきです。