2024年10月1日に発表された変更点
BazelとProtoのルール
Bazelがprotobufビルドで動作する方法に関して、今後変更が予定されています。これらの変更は、最初のステージでは認識が必要であり、2番目のステージまでにはプロジェクトオーナーによる対応が必要です。
ステージ1
Bazel 8のリリースに伴い、protoルール(proto_library、cc_proto_library、java_proto_library、java_lite_proto_library、およびpy_proto_library)はBazelプロジェクトから削除されます。これらはv29でProtocol Buffersプロジェクトに追加されます。Bazelはprotobufプロジェクトのルールを自動的に使用するように更新されるため、この変更は当初、プロジェクトオーナーにとっては何もしない操作(no-op)となります。
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コンパイラにprebuiltsを使用するなど、一般的なユーザーからの要望に対処する予定です。