Bazel ロードマップ

問題を報告する ソースを表示 Nightly · 8.0 . 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

概要

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

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

デベロッパー満足度調査では、ルール作成者は toolchain 開発のさらなるサポートを希望していることがわかりました。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 のサポート
  • Android ルールの更新(Starlark 言語への翻訳など)
  • App Bundle のサポート
  • 最新の NDK バージョンのサポート
  • テストコードのカバレッジ

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

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

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

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

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

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

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

署名付きビルド

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

Standardized Platforms API

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

分析指標を作成する

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

「バイトなしビルド」を使用したリモート実行

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

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

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