バージョン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
をスローします。このシステムプロパティを使用すると、すぐにコードを更新できない場合に一時的な猶予が得られますが、短期的な回避策と見なされるべきです。