Bazel 路线图

<ph type="x-smartling-placeholder"></ph> 报告问题 <ph type="x-smartling-placeholder"></ph> 查看来源 每晚 · 7.2 条 · 7.1敬上 · 7.0 · 6.5 · 6.4

概览

随着 Bazel 项目的不断发展以满足您的需求,我们希望能够 欢迎分享我们 2024 年的新动态。

本路线图介绍了 Google 当前的计划和对未来发展的预测, 运行 Bazel 开发,让您可以了解当前的优先事项和持续发展的事项 项目。

Bazel 8.0 版本

我们计划为 Bazel 8.0 提供长期支持 (LTS) 提供给您。 我们计划实现以下功能。

Bzlmod:外部依赖项管理系统

Bzlmod 会自动解析及传递 使项目能够扩缩,同时保持快速 节省资源

使用 Bazel 8 时,我们默认停用 WORKSPACE 支持(它仍然是 可以使用 --enable_workspace 来启用它);使用 Bazel 9 WORKSPACE 支持将被移除。从 Bazel 7.1 开始,您可以设置 --noenable_workspace 以选择启用新行为。

Bazel 8.0 包含许多增强功能, Bazel 的外部依赖项管理 包括:

  • 新标志 --enable_workspace 可设为 false, 停用 WORKSPACE 功能。
  • 新增了目录监控 API(请参阅 #21435,在 Bazel 中提供 7.1)。
  • 改进了用于生成规范代码库名称的方案, 操作在依赖项版本更新时的可缓存性。 (#21316,在 Bazel 中提供 7.1)
  • 改进了共享代码库缓存(请参阅 #12227)。
  • 供应商和离线模式支持 - 允许用户通过 (请参阅 #19563)。
  • 减少了锁定文件中的合并冲突 (#20396)。
  • 经过分段的 MODULE.bazel (#17880)
  • 允许替换模块扩展程序生成的代码库 (#19301)
  • 改进文档(例如 #18030#15821)和迁移 指南和迁移工具。

远程执行方面的改进

  • 添加对异步执行的支持,通过 通过 --jobs 标志提高了并行处理能力。
  • 通过新的紧凑执行日志,更轻松地调试缓存未命中。 并将其大小缩减至原来的 100 倍,同时大幅降低运行时开销(请参阅 #18643)。
  • 对磁盘缓存实现垃圾回收(请参阅 #5139)。
  • 实现远程输出服务,以允许延迟下载任意 build 输出(请参阅 #20933)。

Android、C++、Java、Python 和 Proto 规则的迁移

完成将 Android、C++、Java 和 Python 规则集迁移到专用 并将它们与 Bazel 版本分离。这项工作可使 Bazel 用户和规则作者

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

规则集的新位置将为 bazelbuild/rules_androidrules_ccrules_javarules_pythongoogle/protobuf。“rules_proto”现为 将被弃用

Bazel 8 将提供一个临时迁移标志,该标志会自动使用 规则集。全部 这些规则集的用户预计最终将依赖于 并像加载其他规则集一样加载它们 Bazel。

Bazel 8 还将在现有扩展规则和子规则 API 的基础上进行改进, 将其标记为非实验性

Starlark 改进

  • 符号宏是一种全新的宏编写方式, BUILD 用户、宏作者和工具。与旧版宏相比 Bazel 只能提供有限的数据洞见,符号宏有助于用户避免常见 并实施最佳做法。
  • 软件包终结器是一项建议功能,旨在为 自定义软件包验证逻辑。它们旨在帮助我们 native.existing_rules()

可配置性

  • 输出路径映射将继续保持稳定:有望获得更好的远程缓存 为使用过渡的规则设计者提供性能和构建速度方面的体验。
  • 自动设置适合给定 --platforms 的构建标志。
  • 定义项目支持的标志组合并自动构建目标 而无需设置 bazelrcs
  • 不要在每次 build 标志发生更改时重新进行 build 分析。

Skyfocus 项目 - 最大限度地减少保留的数据结构

Bazel 在 RAM 中保存大量状态以实现快速增量构建。不过, 开发者通常会更改源文件的一小部分(例如,几乎从不更改 外部依赖项之一)。通过 Skyfocus,Bazel 将提供 一种实验性方法,可丢弃不必要的增量状态并减少 Bazel 的内存 同时仍提供相同的快速增量构建体验。

初始范围仅旨在提高保留的堆指标。峰值堆 有可能减少,但这并不包含在初始范围内。

其他

  • 移动安装 v3:一种更简单、更易于维护的增量安装方法 部署 Android 应用
  • 代码库缓存和 Bazel 的 install_base 的垃圾回收。
  • 减少了沙盒开销。

Bazel-JetBrains* IntelliJ IDEA 支持

增量 IntelliJ 插件更新,以支持最新的 JetBrains 插件 发布。

此路线图快照目标,不应作为保证。 根据开发者和客户的具体情况,优先级可能会有所变化 反馈或新的市场机会。

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

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