2023年12月5日に発表された変更点

2023年12月5日にProtocol Buffersに関して発表された変更点。

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 生成コード互換性に関するランタイムメソッド。これは、我々のクロスバージョンランタイム保証に従い、もはやサポートされません。

詳細については、対応するリリースノートで提供されます。