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

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

Java の破壊的変更

v26 では、破壊的変更ポリシーバージョンサポートポリシーに基づき、Java のメジャーバージョンアップを計画しています。

以下のセクションでは、protocol buffers の 26.0 リリースに含める予定の破壊的変更のセットについて概説します。計画は変更される可能性があることに注意してください。これらは注意すべき潜在的な破壊的変更ですが、今回のリリースで発生するとは限らず、全く発生しない可能性もあります。

Poison Pill による gencode/runtime のミスマッチ検出

クロスバージョンランタイム保証に基づき、Protobuf はメジャーバージョン境界を越えた生成コードとランタイムの混在、または単一のメジャーランタイムバージョン内で新しいバージョンの protoc からの生成コードと古いランタイムの混在をサポートしていません。「poison pill」を導入して、これらの許可されていないミスマッチを検出し、強制する予定です。

これは既存のポリシーの強制を追加するだけなので、破壊的変更とは見なされませんが、ユーザーは生成されたコードの更新が必要になる場合があります。

古い生成コードとの互換性 breaking

v26.x は、古いメジャーバージョンからの生成コードとの互換性を breaking します。ユーザーは、古い生成コードを同じバージョンから再生成する必要があります。

たとえば、元々 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 gencode 互換性のためのランタイムメソッド。これは、クロスバージョンランタイム保証に基づき、もはやサポートされていません。

詳細については、対応するリリースノートで入手できます。