Version 25.x のニュース発表

Protocol Buffers バージョン 25.x に関する変更発表。

以下の発表は Version 25.x に固有のものです。時系列順の情報については、ニュース を参照してください。

Python の破壊的変更

v25 では、message.UnknownFields() は pure 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 と記述する必要があります。

Poison 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 をスローします。このシステムプロパティを使用すると、すぐにコードを更新できない場合に時間を稼ぐことができますが、短期的な回避策と見なす必要があります。