2023 年 4 月 11 日宣布的变更

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

语法反射弃用

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。这符合 Foundational C++ Support Policy 中描述的构建支持策略,并反映在 Foundational C++ Support 中的版本中。