2024 年 10 月 1 日宣布的变更

Protocol Buffers 于 2024 年 10 月 1 日宣布的变更。

Bazel 和 Proto 规则

Bazel 处理 protobuf 构建的方式即将发生变化。这些变化在第一阶段需要引起注意,并在第二阶段之前由项目负责人采取行动。

阶段 1

随着 Bazel 8 的发布,proto 规则 (proto_library, cc_proto_library, java_proto_library, java_lite_proto_library, 和 py_proto_library) 将从 Bazel 项目中移除。它们将添加到 Protocol Buffers 项目的 v29 版本中。Bazel 将更新为自动使用 protobuf 项目中的规则,因此这些变化最初对项目负责人来说是无操作的。

在 Bazel 8 发布后和 Bazel 9 发布前,用户需要显式地从 Protocol Buffers 项目仓库中 load 规则。规则的自动使用仅为支持迁移而临时提供。

使用这些 proto 规则的任何 BUILD.bzl 文件都应添加以下 load() 语句。请注意,这需要 Protobuf v29.0 或更高版本。

load("@protobuf//bazel:proto_library.bzl", "proto_library")

load("@protobuf//bazel:cc_proto_library.bzl", "cc_proto_library")
load("@protobuf//bazel:java_proto_library.bzl", "java_proto_library")
load("@protobuf//bazel:java_lite_proto_library.bzl", "java_lite_proto_library")
load("@protobuf//bazel:py_proto_library.bzl", "py_proto_library")

阶段 2

Bazel 9 发布后,protobuf 库规则的自动加载功能将被移除。届时,您需要在 Bazel 构建文件中包含 load 语句。

最终目标

一旦规则进入 protobuf 仓库,我们打算解决常见的用户请求,例如尽可能使用 proto 编译器的预构建版本。