2023年12月5日に発表された変更点
Java の破壊的変更
v26では、破壊的変更ポリシーおよびバージョンサポートポリシーに従い、Javaのメジャーバージョンアップを計画しています。
以下のセクションでは、プロトコルバッファの26.0リリースに含める予定の破壊的変更のセットを概説します。計画は変更される可能性があり、実際に変更されます。これらは注意すべき潜在的な破壊的変更ですが、この特定のリリースで発生しない可能性や、まったく発生しない可能性もあります。
生成コード/ランタイムの不一致に対する「ポイズンピル」
クロスバージョンランタイム保証に基づき、Protobufはメジャーバージョン境界を越えた生成コードとランタイムの混在、または単一のメジャーランタイムバージョン内で新しいバージョンのprotocからの生成コードと古いランタイムの混在をサポートしていません。これらの許可されていない不一致を検出し、強制するために「ポイズンピル」を導入する予定です。
これは、既存のポリシーの強制を追加するだけなので破壊的変更とは見なされませんが、ユーザーは生成コードを更新する必要がある場合があります。
古い生成コードとの互換性の破壊
v26.xは、古いメジャーバージョンからの生成コードとの互換性を破壊します。ユーザーは古い生成コードを同じバージョンから再生成する必要があります。
例えば、元々v2.x.xの生成コードとv3.x.xランタイムとの後方互換性のために導入されたGeneratedMessageV3は、GeneratedMessageに名称変更されます。ランタイムはエディションをサポートするように更新されますが、これは古い生成コードとは互換性がありません。
これは既存のクロスバージョンランタイム保証に準拠しており、破壊的変更です。
非推奨のメソッド/変数の削除
v26.xでは、非推奨のメソッドと変数へのアクセスが削除されます。これらは通常、以前のリリースで既に@Deprecatedとマークされています。
これにより、以下の網羅的ではないリストへのアクセスが削除されます。
Descriptorの構文API。これらは対応する機能アクセサー(例:
FieldDescriptor.hasPresence()、EnumDescriptor.isClosed())に置き換えられるべきです。TextFormatのprintメソッド。これらは対応する
TextFormat.printer()メソッドに置き換えられるべきです。PARSER変数。これは
parser()メソッドに置き換えられるべきです。古いv2.x.x生成コード互換のためのランタイムメソッド。これは、クロスバージョンランタイム保証に従い、もはやサポートされません。
詳細については、対応するリリースノートで確認できます。