2023 年 4 月 11 日宣布的變更

Protocol Buffers 於 2023 年 4 月 11 日宣布的變更。

語法反射棄用

v23 將棄用使用反射檢查語法版本的功能。此棄用將以建構時的警告形式呈現。此功能將在未來版本中移除。

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

v23 將為單數 bytes 欄位 (包括 oneof 欄位) 新增 ctype=CORD 支援,以指定資料應使用 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++ 支援 中的版本中。