2023 年 4 月 11 日宣布的变更

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

弃用语法反射

v23 将弃用通过反射检查语法版本的功能。此弃用将在构建时以警告的形式体现。该功能将在未来的版本中移除。

在 C++ 中添加对 ctype=CORD 的支持

v23 将为 singular bytes 字段(包括 oneof 字段)添加 ctype=CORD 支持,以指定数据应使用 absl::cord 而不是 string 进行存储。如果开源社区有足够的兴趣,未来的版本可能会为 singular string 字段类型以及 repeated stringbyte 字段添加支持。

ctype=CORD 对扩展没有影响。

您将能够通过字段选项添加此支持

optional bytes foo = 25 [ctype=CORD];

选项保留

选项现在有了“保留”(retention) 的概念,它控制选项是否保留在生成的代码中。默认情况下,选项一直具有“运行时保留”特性,这意味着它们会保留在生成的代码中,因此在运行时在生成的描述符池中可见。但是,您现在可以设置 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++ 支持的版本中。