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

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

以下の発表はバージョン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 生成コードの汚染

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

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