Bazel ロードマップ

概要

Bazel プロジェクトは、コアプロダクトのパフォーマンスを維持、リファクタリング、改善しながら、機能の開発やサポートの提供に取り組み、お客様のニーズに応えて常に進化しています。

Google は、今回の変更により、オープンソース コミュニティに情報を提供し、誰もが一員になれるようにしたいと考えています。このロードマップでは、Bazel 開発の未来に関する現在のイニシアチブと予測について説明し、現在の優先事項と進行中のプロジェクトを明確にします。

このロードマップ スナップショットは、目的を示すものであり、保証するものではありません。優先順位は、デベロッパーやお客様からのフィードバック、または新たな市場機会に応じて変更される場合があります。

Google グループ コミュニティに参加すると、このロードマップの更新などの新機能について通知を受け取ることができます。

Q4 - Bazel 6.0 リリース

Q4 では、新しい長期サポート(LTS)バージョンである Bazel 6.0 が導入されます。Bazel 6.0 には、依存関係の管理や Android での開発などのために、コミュニティから要望の多かった強力な新機能が組み込まれる予定です。

Bzlmod: 外部依存関係管理システム

Bzlmod は推移的依存関係を自動的に解決するため、高速でリソース効率を維持しながらプロジェクトをスケーリングできます。Bazel 5.0 で実験的に導入された Bzlmod が一般提供となり、ダイヤモンドの依存関係の問題の解決策となります。

  • Bzlmod が「試験運用版」から「一般提供」へ
  • rules\_jvm\_external をサポートし、ユーザーが Java プロジェクトの Maven 依存関係をダウンロードできます
  • bzlmod 移行ガイド: bzlmod の導入を検討しているチーム向けのツール、スクリプト、ドキュメント
  • Bazel セントラル リポジトリは、コア Bazel BUILD ルール(rules\_jvm\_externalrules\_gorules\_pythonrules\_nodejs)と Bzlmod に必要な主な依存関係をホストします。

開発の詳細については、Bzlmod コミュニティの最新情報またはオリジナル設計のドキュメントをご覧ください。

Bazel を使用した Android アプリのビルド

Bazel 6.0 では、ツールが改善され、コミュニティ機能への投稿が統合される予定です。Bazel チームは、今後の導入とコードベースの拡大を見込んで、Android ビルドツールと Bazel Android ルールの統合を優先する予定です。

  • D8 を v.3.3.28 に更新し、デフォルトの dexer として設定しました。
  • 5.X で追加されたメインのコミュニティ機能のコントリビューションと統合され、以下がサポートされます。
    • D8 での永続ワーカー
    • D8 を使用した脱糖
    • Android マニフェスト内の「uses-permissions」タグの統合
    • Android リソース処理の Multiplex ワーカー

オプションのツールチェーン

デベロッパー満足度調査によると、ルール作成者がツールチェーンのさらなる開発に対するサポートを望んでいることがわかりました。Bazel 6.0 では、他のプラットフォームのフォールバック実装で利用できる場合、オプションの高パフォーマンス ツールチェーンを使用してルールを記述できるようになります。

Bazel-JetBrains* IntelliJ IDEA サポート

JetBrains は Bazel と提携して Bazel IntelliJ IDEA プラグインを共同で保守しています。これにより、コミュニティの管理体制を強化し、機能のリクエストや開発に取り組めるようにすることができます。

  • IntelliJ プラグイン v. 2022.2 は、最新の JetBrains プラグイン リリースをサポートします。
  • リモート開発との互換性を向上
  • Scala のサポートなど、処理中の機能に関するコミュニティ主導の開発を促進

今回の開発について詳しくは、Bazel-JetBrains のブログでのお知らせをご覧ください。

今後の開発

今後、Bazel チームは開発を開始したか、2023 年以降は以下の機能を優先する予定です。

Bazel の Android ビルドルールの改善

ビルド、テスト、デプロイのワークフローに重点を置き、Android アプリの開発エクスペリエンスに引き続き投資してください。

  • R8 への移行とサポート
  • Android ルールの更新(Starlark 言語への翻訳を含む)
  • App Bundle のサポート
  • 最新の NDK バージョンのサポート
  • コード カバレッジをテストする

OSS ライセンス コンプライアンス ツール

デベロッパーは、含まれているパッケージの可用性とセキュリティを確保するために、堅牢なライセンス コンプライアンス チェッカーをリクエストしました。このプロジェクトでは、特定のソフトウェア コンポーネントに関連するコンプライアンス リスクとライセンス リスクを特定して軽減するための一連のルールとツールを提供します。対象となる機能は次のとおりです。

  • 特定のターゲットで使用されるパッケージを監査する機能
  • 組織固有のライセンス コンプライアンス チェックを構築できる機能。

GitHub で進行中の rules_license の実装をご覧ください。

Bzlmod: 外部依存関係管理システム

リリース時、Bzlmod は推移的依存関係のスケーラビリティと信頼性を向上させます。Bzlmod は、今後 3 年間で WORKSPACE をデフォルトの Bazel ワークスペース依存関係管理サブシステムに置き換えることを目指しています。対象となる機能は次のとおりです。

  • 密閉型ビルドのサポート
  • ベンダー/オフライン モードで、バージョニングされた参照ルールをローカルコピーに固定
  • Bazel Central Registry では、コミュニティへの貢献と Bazel の主要なルールとプロジェクトの採用を定期的に行っています
  • Bzlmod が Bazel プロジェクトをビルドするデフォルトのツールになる

署名付きビルド

Bazel は、Google の鍵で署名された Windows と Mac 用の信頼できるバイナリを提供します。この機能を使用すると、マルチプラットフォームのデベロッパーや開発オペレーション担当者が Bazel バイナリのソースを特定し、未検証の不正なバイナリからシステムを保護できます。

標準化されたプラットフォーム API

新しい Platforms API により、多言語、マルチプラットフォーム ビルドのアーキテクチャ構成が標準化されます。この機能により、デベロッパーは大規模なビルドにおける、コストのかかる開発時のエラーや複雑さを軽減できます。

分析指標を構築する

Bazel テレメトリーで分析フェーズの時間指標が提供され、デベロッパーが独自のビルド パフォーマンスを最適化できるようになります。

「バイトのないビルド」によるリモート実行

バイトのないビルドでは、Bazel が必要なアーティファクトのダウンロードのみを許可してパフォーマンスを最適化し、ビルドがネットワーク帯域幅のボトルネックになるのを防ぎます。リモートビルド用に追加された機能には次のものがあります。

  • 非同期ダウンロードを使用すると、ローカル アクションとリモート アクションが依存する出力をダウンロードしたらすぐに開始できます。
  • Symlink のサポートを追加する
  • ビルドの完了後にリモート アクションから中間出力を取得する

*Copyright © 2022 JetBrains s.r.o. JetBrains および IntelliJ は JetBrains s.r.o.の登録商標です。