2025 年 1 月 23 日宣布的变更

于 2025 年 1 月 23 日宣布的 Protocol Buffers 变更。

停用 Java gencode

我们正在为 25.x 分支打补丁,以停用在 3.21.7 版本之前创建的 Java gencode。然后,我们会将从 3.21.7 到 3.25.5 的所有 Java protobuf 版本标记为易受 footmitten CVE 的攻击。

此变更打上补丁后,除非您设置系统属性“-Dcom.google.protobuf.use_unsafe_pre22_gencode”,否则 protobuf 将从 makeExtensionsImmutable 方法中抛出 UnsupportedOperationException。如果您无法立即更新代码,使用此系统属性可以为您争取一些时间,但这应被视为短期解决方案。

停用 MSVC + Bazel

更新: 此计划已取消。您可以在 2025 年 7 月 16 日的公告中了解更多相关信息。

我们将于 v34 版本中放弃对 Bazel 和 MSVC 结合使用的支持。从 v30 版本开始,除非您指定退出标志 --define=protobuf_allow_msvc=true 来忽略错误,否则我们将停用这种组合并报错。

MSVC 的路径长度限制与 Bazel 的沙盒机制相结合,使得两者的支持变得越来越困难。为了避免随机地影响将 protobuf 安装到长路径中的用户,我们将完全禁止在 Bazel 中使用 MSVC。我们将继续支持在 CMake 中使用 MSVC,并开始支持在 Bazel 中使用 clang-cl。有关任何反馈或讨论,请参阅 https://github.com/protocolbuffers/protobuf/issues/20085