バージョン 25.x のニュース発表

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

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

Python 破壊的変更

v25 では、純粋な Python と C++ 拡張機能で message.UnknownFields() が非推奨になります。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 の毒入り化

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

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