Bazel 路线图

报告问题 查看源代码

概览

新的 Bazel 社区新年快乐!新的一年,我们计划推出 2023 年路线图的详细信息。去年,我们发布了采用 Bazel 6.0 方案的 2022 年路线图。我们希望该路线图能够帮助您了解构建工具需求。随着 Bazel 项目的持续发展,我们需要满足您的需求,因此我们希望与您分享 2023 年的最新动态。

通过这些变更,我们希望能够让开源社区了解最新信息并包容。此路线图描述了 Bazel 开发的未来计划和预测,让您可以了解当前优先事项和正在进行的项目。

Bazel 7.0 版本

我们计划在 2023 年底为您提供 Bazel 7.0 长期支持 (LTS)。使用 Bazel 7.0,我们的目标是提供许多进行中的项目,并继续开发用户一直要求的功能。

更好的跨平台缓存共享

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

使用 Bazel 构建 Android 应用

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

远程执行改进

Bazel 7.0 支持异步执行,通过增加标志 --作业,通过增加并行处理来加快远程执行速度。

Bzlmod:外部依赖项管理系统

Bzlmod 会自动解析传递依赖项,允许项目在扩缩的同时保持快速且高效。Bazel 7.0 包含 Bazel 的外部依赖项管理功能的多项增强功能,包括:

  • 默认情况下,Bzlmod 用于在 Bazel 中管理外部依赖项
  • 支持锁定文件 - 使用 Bzlmod 支持封闭构建
  • 支持供应商/离线模式 - 允许用户运行具有预下载依赖项的 build
  • 支持完整的代码库缓存(缓存不仅可以下载工件,还可以下载最终的代码库内容)
  • Bazel Central Registry 包含定期为社区做出贡献以及采用关键的 Bazel 规则和项目

构建分析指标

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

默认不启用字节构建

不使用字节的构建可避免下载中间工件并防止 build 遇到网络带宽瓶颈,从而优化性能。添加的功能包括:

使用 Skymeld 提高工作效率

Bazel 7.0 引入了 Skymeld,它是一种可缩短多目标构建用时的评估模式。Skymeld 可消除分析阶段与执行阶段之间的障碍,从而加快构建速度,尤其是对于具有多个顶级目标的构建。不过,对于单目标 build,不会有显著差异。

Bazel 生态系统和工具

使用 Bazel 构建 Android 应用

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

软件物料生成数据 (SBOM) 和 OSS 许可合规性工具

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

已签名的 build

Bazel 为使用 Google 密钥签名的 Windows 和 Mac 提供了受信任的二进制文件。借助此功能,多平台开发者/开发运营人员可以识别 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 and IntelliJ 是 JetBrains s.r.o 的注册商标