版本 25.x 新闻公告
以下公告专门针对 2023 年 11 月 1 日发布的版本 25.x。有关按时间顺序排列的信息,请参阅新闻。
Python 重大变更
在 v25 版本中,纯 Python 和 C++ 扩展中的 message.UnknownFields() 将被弃用,并将在 v26 版本中移除。请使用 unknown_fields.py 中新的 UnknownFieldSet(message) 支持作为替代。
μpb 迁移至 Protobuf Git 代码库
从 v25 版本开始,μpb 现在位于 protobuf 代码库中,而不是在其之前的位置(一个单独的代码库)。未来所有 μpb 的开发都将仅在新位置进行。
合并这两个代码库将简化并加速我们的开发过程,因为不再需要在 protobuf 和 μpb 之间更新固定的版本依赖。现在,对 μpb 的更改会立即在 protobuf 代码中生效,反之亦然,无需手动升级步骤。
我们预计大多数用户不需要采取太多行动来适应这一变化。μpb 是我们 Ruby、PHP 和 Python 实现的引擎,但除非您的代码直接引用了 μpb,否则您很可能不会注意到这一变化。
如果您从 Bazel 项目中引用 μpb,您将需要更新 μpb 的引用以指向 protobuf(例如,将 @upb 替换为 @com_google_protobuf)。我们保持 μpb 的文件路径和 Bazel 目标不变,以尽量减少额外更改的需求,但有两个例外:
upbc目录已重命名为upb_generator。- μpb 的顶层
BUILD文件已移至upb目录中。因此,例如,对@upb//:reflection的引用现在应写为@com_google_protobuf//upb:reflection。
停用旧版 Java 生成代码
我们正在向 25.x 分支打一个补丁,该补丁将停用在 3.21.7 版本之前创建的 Java 生成代码。然后,我们会将从 3.21.7 到 3.25.5 的所有 Java protobuf 版本标记为易受 footmitten CVE 的攻击。
此更改打上补丁后,protobuf 将从 makeExtensionsImmutable 方法中抛出 UnsupportedOperationException 异常,除非您设置系统属性“-Dcom.google.protobuf.use_unsafe_pre22_gencode”。如果您无法立即更新代码,使用此系统属性可以为您争取一些时间,但应将其视为短期解决方案。