概览
Bazel 项目会不断发展,以满足您的需求,在维护、重构和提升核心产品性能的同时,开发新功能并提供支持。
通过这些变更,我们希望让开源社区及时了解最新动态并参与其中。此路线图介绍了当前计划和对未来 Bazel 开发的预测,让您了解当前优先级和正在进行的项目。
此路线图仅为目标快照,不应视为保证。我们会根据开发者和客户反馈或新的市场机遇,随时调整优先级。
如需在新功能(包括此路线图的更新)发布时收到通知,请加入 Google 群组社区。
第 4 季度 - Bazel 6.0 发布
第四季度将推出 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,代码库也会不断扩大,因此 Bazel 团队将优先考虑将 Android 构建工具与 Bazel Android 规则集成。
- 将 D8 更新为 v. 3.3.28 并将其设置为默认 dexer。
- 合并到 5.X 中添加的主要社区功能贡献,包括对以下各项的支持:
- 使用 D8 的持久性工作器
- 使用 D8 进行脱糖
- 合并 Android 清单中的“uses-permissions”标记
- Android 资源处理中的多路复用工作器
可选工具链
我们的开发者满意度调查显示,规则作者希望获得对进一步工具链开发的支持。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 工作区依赖项管理子系统。目标功能包括:
- 支持密封构建
- 供应商/离线模式将版本化引用规则固定到本地副本
- Bazel 中央注册中心包含常规社区贡献,并采用关键的 Bazel 规则和项目
- Bzlmod 成为构建 Bazel 项目的默认工具
已签名的 build
Bazel 将提供使用 Google 密钥签名的可信 Windows 和 Mac 二进制文件。此功能可让多平台开发者/开发运维人员识别 Bazel 二进制文件的来源,并保护其系统免受恶意、未经验证的二进制文件的侵害。
标准化平台 API
新的 Platforms API 将标准化多语言、多平台 build 的架构配置。借助此功能,开发者可以减少大型 build 中的高成本开发时错误和复杂性。
构建分析指标
Bazel 遥测将提供分析阶段的时间指标,让开发者能够优化自己的 build 性能。
使用“Builds without the Bytes”进行远程执行
不含字节的 build 将通过仅允许 Bazel 下载所需的制品来优化性能,从而防止 build 因网络带宽而受限。为远程 build 添加的功能包括:
- 使用异步下载,以便本地和远程操作在下载其依赖的输出后立即启动
- 添加符号链接支持
- 在 build 完成后从远程操作中检索中间输出
*版权所有 © 2022 JetBrains s.r.o.。JetBrains 和 IntelliJ 是 JetBrains s.r.o.的注册商标。