2023年4月11日に発表された変更点
構文リフレクションの非推奨化
v23では、リフレクションを使用した構文バージョンのチェック機能が非推奨になります。この非推奨化は、ビルド時に警告として含まれます。この機能は将来のリリースで削除されます。
C++ で ctype=CORD のサポートを追加
v23では、単一のbytes
フィールド(oneof
フィールドを含む)にctype=CORD
サポートが追加され、データがstring
ではなくabsl::cord
を使用して保存されるように指定できるようになります。オープンソースコミュニティから十分な関心があれば、将来のリリースで単一のstring
フィールドタイプ、およびrepeated
string
およびbyte
フィールドのサポートが追加される可能性があります。
ctype=CORD
は拡張機能には影響しません。
フィールドオプションを使用してサポートを追加できます。
optional bytes foo = 25 [ctype=CORD];
オプションの保持
オプションには、生成されたコードでオプションを保持するかどうかを制御する保持という概念が追加されました。オプションはデフォルトで常にランタイム保持されており、生成されたコードに保持され、生成された記述子プールでランタイム時に可視でした。しかし、今後はretention = RETENTION_SOURCE
を設定して、オプション(またはオプション内のフィールド)がランタイム時に保持されないように指定できます。これはソース保持と呼ばれます。
保持の設定は次のようになります。
extend google.protobuf.FileOptions {
optional int32 source_retention_option = 1234
[retention = RETENTION_SOURCE];
}
通常のフィールドにも設定できますが、その場合、そのフィールドがオプション内に現れる場合にのみ効果があります。
message OptionsMessage {
optional int32 source_retention_field = 1 [retention = RETENTION_SOURCE];
}
詳細については、オプションの保持を参照してください。
Bazel <5.3 のサポート終了
v23では、Bazel 4のサポートが終了します。Protobufは引き続きBazel 5 LTSをサポートし、Bazel 5.3が最小必須バージョンとなります。これは、Foundational C++ Support Policyに記述されているビルドサポートポリシーに従い、Foundational C++ Supportのバージョンに反映されています。