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 への移行と 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 用の信頼できるバイナリを提供します。この機能により、マルチプラットフォームのデベロッパー/デブオプスは Bazel バイナリのソースを特定し、悪意のある未検証のバイナリからシステムを保護できます。

標準化された Platforms 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.の登録商標です。