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 を使用した desugar
    • Android マニフェストの「uses-permissions」タグの統合
    • Android リソース処理での Multiplex ワーカー

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

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

Bazel-JetBrains* IntelliJ IDEA サポート

JetBrains は Bazel と提携して、Bazel IntelliJ IDEA プラグインを共同メンテナンスすることで、コミュニティ スチュワードシップを強化し、機能リクエストや開発への対応力を確保するという目標をサポートしています。

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

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

今後の展開

Bazel チームは今後、2023 年以降に次の機能の開発を開始しているか、以下の機能を優先すると予測しています。

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

引き続き Android アプリの開発エクスペリエンスに投資し、ビルド、テスト、デプロイのワークフローに集中しましょう。

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

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

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

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

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

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

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

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

署名付きビルド

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

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

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

ビルド分析の指標

Bazel テレメトリーは分析フェーズの時間指標を提供し、デベロッパーは独自のビルド パフォーマンスを最適化できます。

「Builds without the Bytes」によるリモート実行

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

  • 非同期ダウンロードを使用して、依存出力をダウンロードしたらすぐにローカル アクションとリモート アクションを起動できるようにする
  • シンボリック リンクのサポートを追加する
  • ビルドの完了後にリモート アクションから中間出力を取得する

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