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

2024年10月1日にProtocol Buffersについて発表された変更点。

BazelとProtoルール

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

ステージ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する必要があります。ルールの自動使用は、移行をサポートするための暫定的なものです。

ユーザーは、これらの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コンパイラのプリビルドを使用するなど、一般的なユーザーからの要望に対応する予定です。