2024 年 10 月 1 日宣布的变更

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

Bazel 和 Proto 规则

Bazel 将用于 protobuf 构建的方式即将发生变更。这些变更在第一阶段需要引起注意,并在第二阶段之前需要项目所有者采取行动。

阶段 1

随着 Bazel 8 的发布,proto 规则(proto_librarycc_proto_libraryjava_proto_libraryjava_lite_proto_librarypy_proto_library)将从 Bazel 项目中移除。它们将添加到 v29 版本的 Protocol Buffers 项目中。Bazel 将更新为自动使用来自 protobuf 项目的规则,因此对于项目所有者来说,此更改最初是无操作的。

在 Bazel 8 发布之后和 Bazel 9 发布之前,用户需要从 Protocol Buffers 项目仓库显式 load 这些规则。自动使用这些规则只是临时的,以支持迁移。

用户应将以下 load() 语句添加到任何使用这些 proto 规则的 BUILD.bzl 文件中。请注意,这些语句需要 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 编译器使用预构建版本。