2023 年 4 月 11 日宣布的变更
Protocol Buffers 于 2023 年 4 月 11 日宣布的变更。
语法反射弃用
v23 将弃用使用反射检查语法版本的能力。此弃用将在构建时作为警告包含。该功能将在未来版本中移除。
在 C++ 中添加对 ctype=CORD 的支持
v23 将为单一的 bytes
字段(包括 oneof
字段)添加 ctype=CORD
支持,以指定数据应使用 absl::cord
而不是 string
存储。如果开源社区有足够的需求,未来版本可能会为单一的 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 中的版本。