Version 25.x 新闻公告
以下公告特定于 25.x 版本。要按时间顺序查看信息,请参阅 新闻。
Python 破坏性更改
在 v25 版本中,message.UnknownFields()
将在纯 Python 和 C++ 扩展中被弃用。它将在 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
。
Poison Java 代码生成
我们正在将一个更改补丁到 25.x 分支中,该更改将 poison 在 3.21.7 版本 之前创建的 Java 代码生成。然后,我们将把从 3.21.7 到 3.25.5 的所有 Java protobuf 版本标记为易受 footmitten CVE 攻击。
在此更改补丁应用后,除非您设置系统属性“-Dcom.google.protobuf.use_unsafe_pre22_gencode
”,否则 protobuf 将从 makeExtensionsImmutable
方法抛出 UnsupportedOperationException
异常。如果您无法立即更新代码,使用此系统属性可以为您争取一些时间,但应将其视为短期解决方法。