2023年12月5日に発表された変更点
Java の破壊的変更
v26では、我々はJavaのメジャーバージョンアップを計画しており、これは我々の破壊的変更ポリシーおよびバージョンサポートポリシーに基づいています。
以下のセクションでは、Protocol Buffers の 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 生成コード互換性に関するランタイムメソッド。これは、我々のクロスバージョンランタイム保証に従い、もはやサポートされません。
詳細については、対応するリリースノートで提供されます。