概览
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 的进一步采用和代码库不断扩大,Bazel 团队将优先将 Android 构建工具与 Bazel Android 规则集成。
- 将 D8 更新为 v. 3.3.28,并将其设置为 default dexer。
- 合并了在 5.X 中添加的主要社区功能贡献,包括对以下内容的支持:
- 使用 D8 的持久性工作器
- 使用 D8 脱糖
- 合并“uses-permissions”Android 清单中的标记
- 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 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 密钥签名的可信二进制文件。借助此功能,多平台开发者/开发运维团队可以识别 Bazel 二进制文件的来源,并保护其系统免受未经验证的恶意二进制文件的侵害。
Standardized Platforms API
新的 Platforms API 将为多语言、多平台 build 标准化架构配置。借助此功能,开发者可以减少大型 build 中代价高昂的开发时间错误和复杂性。
build 分析指标
Bazel 遥测功能将提供分析阶段时间指标,让开发者能够优化自己的构建性能。
使用“Builds without the Bytes”进行远程执行
没有字节数的构建将仅允许 Bazel 下载所需的工件,从而优化性能,防止构建出现网络带宽瓶颈。为远程 build 添加的功能包括:
- 使用异步下载,让本地和远程操作在下载其依赖输出后立即启动
- 添加符号链接支持
- 在构建完成后从远程操作检索中间输出
*版权所有 © 2022 JetBrains s.r.o. JetBrains 和 IntelliJ 是 JetBrains s.r.o. 的注册商标。