Bazel 路线图

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

概览

Bazel 项目会不断发展,以满足您的需求,在维护、重构和提升核心产品性能的同时,开发功能并提供支持。

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

此路线图仅列出了目标,不应视为保证。这些优先事项可能会根据开发者和客户的反馈或新的市场机遇而发生变化。

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

第 4 季度 - Bazel 6.0 版本

第 4 季度推出了 Bazel 6.0,这是新的长期支持 (LTS) 版本。Bazel 6.0 计划添加社区要求的强大新功能,用于管理依赖项、使用 Android 进行开发等。

Bzlmod:外部依赖项管理系统

Bzlmod 会自动解析传递依赖项,让项目能够扩容,同时保持快速运行和高资源效率。Bzlmod 在 Bazel 5.0 中以实验性方式推出,即将正式发布,并为钻石依赖项问题提供解决方案。

  • 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 的进一步采用和代码库不断扩大,Bazel 团队将优先将 Android 构建工具与 Bazel Android 规则集成。

  • 将 D8 更新为 3.3.28 版,并将其设为默认 dexer
  • 合并了在 5.X 中添加的主要社区功能贡献,包括对以下内容的支持:
    • 使用 D8 的持久性工作器
    • 使用 D8 脱糖
    • 合并 Android 清单中的“uses-permission”标记
    • Android 资源处理中的多路复用工作器

可选工具链

我们的开发者满意度调查显示,规则作者希望获得进一步的工具链开发支持。在 Bazel 6.0 中,作者可以使用可选的高性能工具链编写规则(如果有),并为其他平台提供回退实现。

Bazel-JetBrains* IntelliJ IDEA 支持

JetBrains 与 Bazel 合作,共同维护 Bazel IntelliJ IDEA 插件,以实现增强社区管理能力并释放功能请求和开发能力的目标。

  • IntelliJ 插件 2022.2 版支持最新的 JetBrains 插件版本
  • 提高与远程开发的兼容性
  • 进一步推动社区驱动型开发,以便实现 Scala 支持等正在开发的功能

如需详细了解这项开发,请参阅 Bazel-JetBrains 博文公告

未来发展

展望未来,Bazel 团队已开始开发或预计会在 2023 年及之后优先开发以下功能。

改进 Bazel 的 Android build 规则

继续投资于 Android 应用开发体验,重点关注构建、测试和部署工作流。

  • 迁移到 R8 并支持 R8
  • Android 规则的更新,包括对 Starlark 语言的翻译
  • 支持 app bundle
  • 支持近期的 NDK 版本
  • 测试代码覆盖率

开源软件许可合规性工具

开发者请求提供强大的许可证合规性检查工具,以确保所包含软件包的可用性和安全性。该项目提供了一组规则和工具,可帮助识别和缓解与给定软件组件相关的合规性和许可风险。目标功能包括:

  • 能够审核给定目标使用的软件包
  • 能够构建组织专用许可合规性检查。

请参阅 GitHub 上正在进行的 rules_license 实现

Bzlmod:外部依赖项管理系统

发布时,Bzlmod 提高了传递依赖项的可伸缩性和可靠性。在接下来的三年内,Bzlmod 的目标是取代 WORKSPACE,成为默认的 Bazel 工作区依赖项管理子系统。受限功能包括:

  • 支持密封型 build
  • 供应商/离线模式将版本引用规则固定到本地副本
  • Bazel 中央注册库包括定期的社区贡献和关键 Bazel 规则和项目的采用
  • Bzlmod 成为构建 Bazel 项目的默认工具

已签名的 build

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

Standardized Platforms API

新的 Platforms API 将为多语言、多平台 build 标准化架构配置。借助此功能,开发者可以减少大型 build 中代价高昂的开发时错误和复杂性。

build 分析指标

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

使用“Builds without the Bytes”进行远程执行

不包含字节的 build 会通过仅允许 Bazel 下载所需工件来优化性能,从而防止 build 因网络带宽而出现瓶颈。为远程 build 添加的功能包括:

  • 使用异步下载,让本地和远程操作在下载其依赖输出后立即启动
  • 添加符号链接支持
  • 在构建完成后从远程操作检索中间输出

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