2023 年 4 月 11 日發布的變更

於 2023 年 4 月 11 日針對 Protocol Buffers 發布的變更。

語法反射棄用

v23 將棄用使用反射檢查語法版本的功能。棄用將在建置時包含為警告。此功能將在未來版本中移除。

在 C++ 中新增對 ctype=CORD 的支援

v23 將新增對單數 bytes 欄位的 ctype=CORD 支援,包含 oneof 欄位,以指定應使用 absl::cord 而非 string 來儲存資料。如果開源社群有足夠的興趣,未來版本可能會新增對單數 string 欄位類型以及 repeated stringbyte 欄位的支援。

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 作為最低要求版本。這符合 基礎 C++ 支援政策中描述的建置支援政策,並反映在 基礎 C++ 支援中的版本中。