Protocol Buffers 24.0 已经发布。Protocol Buffers(protobuf)是Google 开源的语言无关、平台无关的可扩展机制,用于序列化结构化数据。
部分更新内容包括:
Compiler
- 放弃对 Bazel 5 的支持。(fff4905)
- 允许代码生成器指定它们是否支持版本。(e2cec78)
- Compiler:纠正无输出时的 depfile 生成 (a44fc2b)
- 为生成的默认实例添加 dllexport_decl。(#13085)(9d0961a)
- 在 TSan 模式下,检测 repeated/map的并发突变。(d800c5f)
- 添加 GCC constexpr bug 的解决方法 (e15326b)
- 默认情况下打开 table-driven parser,因为它不再是实验性的。(c3e2efe)
- 通过一些方法缩小生成的协议缓冲区代码大小(97c3513)
- 执行目标约束的强制执行(e3848c1)
- Fix(libprotoc):从 .so 导出有用的符号(44b4bcc)
C++
- 在 OSS 模式下省略一些外部模板特化(2ed49c9)
- 自动回滚提交adb2c4b。(9f2d7ea)
- 修复在 MinGW-w64 上构建共享库的问题 (#13240) (c2f07bb)
- 启用 TSan 验证以检测消息的可变访问器何时与同一消息上的另一个访问器同时调用时的 data race。(0275e51)
- 修复 split 重复字段时局部性优化器出错的情况,并添加检查以确保优化的 order 与未优化的 order 具有相同的大小。(76a327e)
- 在 DynamicMessageFactory 中明确标记单个 arg ctor。(8fe88a5)
- 让 ParseRepeatedStringOnce 调用 AllocateFromStringBlock()。(bcf3e36)
- 检查 MpRepeatedMessage 中的 next tag。(9e1cf6f)
- 为生成的默认实例添加 dllexport_decl。(#13085)(9d0961a)
TextFormat::ParseFieldValueFromString
现在采用absl::string_view
作为input
,而不是const std::string &
(5411fc6)- 在 TSan 模式下,检测 repeated/map 字段的并发突变。(d800c5f)
- 对非 Windows 平台上的静态库和共享库使用相同的 ABI (#12983) (4329fde)
- 使用基于迭代器的方法替换 ColdChunkSkipper。(ad677f3)
- ......
Java
- 对预分配设置 4k 限制,以防止格式错误的输入导致 OOM(173)
- 标记 OneofDescriptor.isSynthetic() 已弃用(b6b86e2)
- 将 protobuf-kotlin 添加到 protobuf-bom (#12936) (943b696)
- 使用字段描述符而不是 clear 方法来处理 Java proto3 optionals(synthetic oneofs) 的 clear(a534902)
- Deps:将 Guava 更新到 32.0.0 (#12953) (cd615a8)
- 自动回滚提交3e188b7(a1b3ff0)
Csharp
- [C#] 替换验证描述符名称的regex (#12174)
- 实现 C# 的选项保留 (5f64444)
其他
- 删除 Bazel 4 支持并添加 Bazel 6 (4031712)
- 将 Abseil submodule 升级至 20230125.3 (#12660) (2a3ce31)
- 添加了对 JSON 字符串中嵌入空值的一致性测试。(37dfe80)
更多详细内容可查看更新说明。