Bazel 路线图

报告问题 查看源代码 每夜 build · 8.0 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

概览

祝 Bazel 社区新年快乐!新年伊始,我们计划详细介绍 2023 年路线图。去年,我们发布了 2022 年路线图,其中包含 Bazel 6.0 计划。我们希望该路线图能帮助您了解构建工具需求。为了满足您的需求,Bazel 项目将不断发展,我们想与您分享 2023 年的最新动态。

通过这些变更,我们希望让开源社区及时了解相关信息,并让所有人都能参与其中。此路线图介绍了当前的计划和对 Bazel 未来发展的预测,让您了解当前的优先事项和正在进行的项目。

Bazel 7.0 版本

我们计划于 2023 年底为您提供 Bazel 7.0 长期支持 (LTS)。我们希望通过 Bazel 7.0 实现许多正在进行的工作,并继续改进用户一直要求的功能。

更好地实现跨平台缓存共享

支持在不同的本地 build (Mac) 和远程 build (Linux) 平台之间共享缓存工件,主要用于 Java/Kotlin 和 Android 开发,从而提高性能并高效使用缓存。

使用 Bazel 构建 Android 应用

清单和资源合并工具更新为 v30.1.3,以便 Android 应用开发者使用较新的清单合并功能,例如 tools:node="merge"。

远程执行方面的改进

Bazel 7.0 支持异步执行,通过增加标志 --jobs 的并行性来加快远程执行速度。

Bzlmod:外部依赖项管理系统

Bzlmod 会自动解析传递依赖项,让项目能够扩容,同时保持快速运行和高资源效率。Bazel 7.0 对 Bazel 的外部依赖项管理功能进行了多项增强,包括:

  • 默认启用 Bzlmod,以便在 Bazel 中管理外部依赖项
  • 锁定文件支持 - 使用 Bzlmod 启用密封 build
  • 供应商/离线模式支持 - 允许用户运行包含预下载依赖项的 build
  • 完整的仓库缓存支持(不仅缓存下载的工件,还缓存最终的仓库内容)
  • Bazel 中央注册库包括定期的社区贡献和关键 Bazel 规则和项目的采用

build 分析指标

Bazel 7.0 提供了分析阶段时间指标,让开发者能够优化自己的构建性能。

默认情况下,build 不启用字节

不包含字节的 build 通过避免下载中间工件并防止 build 因网络带宽而出现瓶颈,从而优化性能。新增的功能包括:

利用 Skymeld 提升工作效率

Bazel 7.0 引入了 Skymeld,这是一种评估模式,可缩短多目标 build 的实际运行时间。Skymeld 消除了分析阶段和执行阶段之间的障碍,从而提高了构建速度,尤其是对于具有多个顶级目标的构建。不过,对于单目标 build,预计不会有明显差异。

Bazel 生态系统和工具

使用 Bazel 构建 Android 应用

  • 将 Android 原生规则迁移到 Starlark:对于 Bazel 7.0,Android 规则会迁移到 Starlark,以将开发与 Bazel 本身分离,并更好地实现社区贡献。此外,我们还使这些规则独立于核心 Bazel 二进制文件,从而能够更频繁地发布。
  • 将 Android 规则迁移到 Starlark
  • R8 支持:允许 Android 应用开发者使用经过更新的 R8 优化。
  • Mobile Install:Android 应用开发者可以通过更新版 Mobile Install 快速开发、测试和部署任何 Android 应用更改。

软件物料清单数据生成 (SBOM) 和开源软件许可合规性工具

借助 Bazel,开发者可以生成有助于生成 SBOM 的数据。这些数据以文本或 JSON 格式输出,并且可以轻松设置格式以满足 SPDXCycloneDX 规范。此外,该流程还提供了用于声明 Bazel 模块所采用许可的规则,以及用于围绕这些声明构建流程的工具。请参阅 GitHub 上正在进行的 rules_license 实现

已签名的 build

Bazel 为 Windows 和 Mac 提供使用 Google 密钥签名的可信二进制文件。借助此功能,多平台开发者/开发运维团队可以识别 Bazel 二进制文件的来源,并保护其系统免受潜在的恶意未验证二进制文件的侵害。

将 Java、C++ 和 Python 规则迁移到 Starlark

已将 Java、C++ 和 Python 规则集完全迁移到 Starlark。通过这项工作,Bazel 用户只能分叉规则集,而不能分叉 Bazel 二进制代码库,从而实现以下目标:

  • 根据需要更新和自定义规则
  • 独立于 Bazel 更新规则

Bazel-JetBrains* IntelliJ IDEA 支持

增量 IntelliJ 插件更新,以支持最新的 JetBrains 插件版本。

此路线图仅列出了目标,不应视为保证。我们会根据开发者和客户的反馈或新的市场机遇调整优先事项。

如需接收有关新功能(包括此路线图的更新)的通知,请加入 Google 群组社区。

*版权所有 © 2022 JetBrains s.r.o。JetBrains 和 IntelliJ 是 JetBrains s.r.o 的注册商标