2024年10月1日に発表された変更

2024年10月1日に Protocol Buffers に関する変更が発表されました。

Bazel と Proto Rules

protobuf ビルドにおける Bazel の動作方法に今後変更があります。これらの変更は、最初のステージでは認識が必要であり、2番目のステージの前にはプロジェクトオーナーによるアクションが必要です。

ステージ 1

Bazel 8 のリリースに伴い、proto rules (proto_library, cc_proto_library, java_proto_library, java_lite_proto_library, および py_proto_library) は Bazel プロジェクトから削除されます。これらは v29 で Protocol Buffers プロジェクトに追加されます。Bazel は protobuf プロジェクトの rules を自動的に使用するように更新されるため、この変更は当初プロジェクトオーナーにとっては何もする必要はありません。

Bazel 8 のリリース後、Bazel 9 のリリース前には、ユーザーは Protocol Buffers プロジェクトリポジトリから rules を明示的に load する必要があります。rules の自動使用は移行をサポートするための一時的なものです。

これらの proto rules を使用する 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 ライブラリの rules の自動ロードは削除されます。その時点では、Bazel ビルドファイルに load ステートメントが必要になります。

最終目標

rules が protobuf リポジトリに入ったら、可能な場合は proto コンパイラーに prebuilts を使用するなど、一般的なユーザーリクエストに対処する予定です。