Bazel 路线图

<ph type="x-smartling-placeholder"></ph> 报告问题 查看来源 敬上 每晚 · 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,我们希望能够提供许多进行中的项目,并不断根据用户要求改进的功能。

更好的跨平台缓存共享功能

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

使用 Bazel 构建 Android 应用

清单和Resource Merger 更新至 v30.1.3,Android 应用开发者可以使用 tools:node="merge" 等较新的清单合并功能。

远程执行方面的改进

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

Bzlmod:外部依赖项管理系统

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

  • 对于 Bazel 中的外部依赖项管理,Bzlmod 默认处于启用状态
  • 锁定文件支持 - 使用 Bzlmod 实现封闭构建
  • 供应商/离线模式支持 - 允许用户使用预先下载的依赖项运行构建
  • 完整的仓库缓存支持(不仅缓存下载工件,还包括最终的仓库内容)
  • Bazel 中央注册表涵盖社区定期贡献的内容,以及关键的 Bazel 规则和项目

build 分析指标

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

在未默认启用字节的情况下进行构建

不使用字节的构建可以避免下载中间工件并防止构建在网络带宽方面出现瓶颈,从而优化性能。新增功能包括:

利用 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 和 IntelliJ 是 JetBrains s.r.o 的注册商标