概览
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\_external、rules\_go、rules\_python、rules\_nodejs)和 Bzlmod 所需的关键依赖项
如需详细了解此开发,请观看 Bzlmod 社区更新 或阅读 原始设计文档。
使用 Bazel 构建 Android 应用
Bazel 6.0 将包含改进的工具和合并的社区功能贡献。考虑到进一步采用和不断增长的代码库,Bazel 团队将优先考虑将 Android 构建工具与 Bazel Android 规则集成。
- 将 D8 更新到 v. 3.3.28 并将其设置为默认 dexer。
- 合并到 5.X 中添加的主要社区功能贡献,包括对以下内容的支持:
- 使用 D8 的持久型 worker
- 使用 D8 进行脱糖
- 合并 Android 清单中的“uses-permissions”标记
- Android 资源处理中的多路复用 worker
可选工具链
我们的开发者满意度调查显示,规则作者希望支持进一步的工具链开发。Bazel 6.0 将允许作者在其他平台提供回退实现时,使用可选的高性能工具链编写规则。
Bazel-JetBrains* IntelliJ IDEA 支持
JetBrains 已与 Bazel 合作,共同维护 Bazel IntelliJ IDEA 插件,以支持提高社区管理能力并开放功能请求和开发能力的目标。
- IntelliJ 插件 v. 2022.2 支持最新的 JetBrains 插件版本
- 提高与远程开发的兼容性
- 进一步推动社区驱动的开发,以实现正在开发的功能(例如 Scala 支持)
如需详细了解此开发,请阅读 Bazel-JetBrains 博客公告。
未来发展
展望未来,Bazel 团队已开始开发或预计在 2023 年及以后优先开发以下功能。
改进 Bazel 的 Android 构建规则
继续投资于 Android 应用开发体验,重点关注构建、测试和部署的工作流程。
- 迁移到 R8 并支持 R8
- 更新 Android 规则,包括转换为 Starlark 语言
- 支持 App Bundle
- 支持最新的 NDK 版本
- 测试代码覆盖率
OSS 许可合规性工具
开发者要求提供强大的许可合规性检查器,以确保所含软件包的可用性和安全性。此项目提供了一组规则和工具,可帮助识别和缓解与给定软件组件相关的合规性和许可风险。目标功能包括:
- 能够审核给定目标使用的软件包
- 能够构建组织特定的许可合规性检查。
请参阅 GitHub 上正在进行的 rules_license 实现。
Bzlmod:外部依赖项管理系统
推出后,Bzlmod 可提高传递依赖项的可扩缩性和可靠性。在接下来的三年中,Bzlmod 的目标是取代 WORKSPACE,成为默认的 Bazel 工作区依赖项管理子系统。目标功能包括:
- 支持 hermetic 构建
- 供应商/离线模式将版本化引用规则固定到本地副本
- Bazel Central Registry 包含常规社区贡献和对关键 Bazel 规则和项目的采用
- Bzlmod 成为构建 Bazel 项目的默认工具
已签名的构建
Bazel 将提供使用 Google 密钥签名的 Windows 和 Mac 可信二进制文件。借助此功能,多平台开发者/开发运维人员可以识别 Bazel 二进制文件的来源,并保护其系统免受恶意、未经验证的二进制文件的侵害。
标准化平台 API
新的 Platforms API 将标准化多语言、多平台构建的架构配置。借助此功能,开发者可以减少大型构建中代价高昂的开发时错误和复杂性。
构建分析指标
Bazel 遥测数据将提供分析阶段的时间指标,让开发者能够优化自己的构建性能。
使用“Builds without the Bytes”进行远程执行
Builds without the Bytes 将仅允许 Bazel 下载所需的工件,从而优化性能,防止构建在网络带宽上出现瓶颈。为远程构建添加的功能包括:
- 使用异步下载,让本地和远程操作在下载其依赖的输出后立即启动
- 添加符号链接支持
- 构建完成后,从远程操作检索中间输出
*Copyright © 2022 JetBrains s.r.o. JetBrains and IntelliJ are registered trademarks of JetBrains s.r.o.