Bazel ロードマップ

概要

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

これらの変更により、オープンソース コミュニティに常に情報を提供し、コミュニティを包含していくことを目指しています。このロードマップでは、現在の取り組みと Bazel 開発の将来の予測について説明します。これにより、現在の優先事項と進行中のプロジェクトを把握できます。

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

このロードマップの更新を含む新機能の通知を受け取るには、Google グループ コミュニティにご参加ください。

第 4 四半期 - Bazel 6.0 リリース

第 4 四半期には、新しい長期サポート(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 リソース処理でのワーカーの多重化

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

デベロッパー満足度調査では、ルール作成者がツールチェーンのさらなる開発のサポートを求めていることがわかりました。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 への移行とサポート
  • Starlark 言語への変換を含む、Android ルールの更新
  • App Bundle のサポート
  • 最近の NDK バージョンのサポート
  • テストコード カバレッジ

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

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

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

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

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

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

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

署名付きビルド

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

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

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

分析指標を作成する

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

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

Builds without the Bytes は、必要なアーティファクトのみを Bazel にダウンロードさせることでパフォーマンスを最適化し、ビルドがネットワーク帯域幅でボトルネックになるのを防ぎます。リモートビルド用に次の機能が追加されました。

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

*Copyright © 2022 JetBrains s.r.o. JetBrains と IntelliJ は、JetBrains s.r.o.の登録商標です。