上次验证日期:2020 年 4 月 21 日 (更新历史记录)
联系人:laurentlb
目标
我们的目标是提高 Bazel 的可扩展性。用户应该能够轻松实现自己的规则,并支持新的语言和工具。我们希望改善这些规则的编写和维护体验。
我们重点关注两个方面:
- 让语言和 API 变得简单但强大。
- 提供更好的工具来读取、编写、更新、调试和测试代码。
2020 年第 2 季度
构建运行状况和最佳做法:
- P0不建议使用没有名称的宏,并确保名称是唯一的字符串字面量。这项工作侧重于 Google 代码库,但可能会影响公开发布的工具。
- P0使 Buildozer 命令在 select 和变量方面可靠。
- P1. 让构建程序移除列表中因注释而未排序的重复项。
- P1. 更新了编译程序 linter 以建议内嵌简单表达式。
- P2. 研究 native. existing_rules 的用例,并提出替代方案。
- P2. 研究序言文件的使用场景,并提出替代方案。
性能:
- P1. 使用扁平环境和字节码编译优化 Starlark 解释器。
减少技术债务:
- P0添加了将原生符号移植到 @bazel_tools 下的 Starlark 的功能。
- P1. 删除过时的标志(其中一些标志在 Google 上仍在使用,因此我们需要先清理代码库):
incompatible_always_check_depset_elements
、incompatible_disable_deprecated_attr_params
、incompatible_no_support_tools_in_action_inputs
、incompatible_new_actions_api
。 - P1. 确保以下标志可以在 Bazel 4.0 中翻转:
incompatible_disable_depset_items
、incompatible_no_implicit_file_export
、incompatible_run_shell_command_string
、incompatible_restrict_string_escapes
。 - P1. 完成 lib.syntax 工作(API 清理,与 Bazel 分离)。
- P2. 将 Bazel 的 Java 软件包的构建和测试延迟时间缩短 50%。
社区:
rules_python
很活跃,社区维护着良好的内容。- 持续支持 rules_jvm_external(无未完成的拉取请求、问题分类、发布)。
- 维护 Bazel 文档基础架构:在 bazel-website、bazel-blog、docs 中集中管理 CSS 样式并将其规范化
- Bazel 文档:为端到端文档网站构建添加 CI 测试,以防止出现回归问题。
2020 年第 1 季度
构建运行状况和最佳做法:
- 允许目标跟踪其宏调用堆栈,以便通过
bazel query
导出 - 实现
--incompatible_no_implicit_file_export
- 移除了已废弃的 depset API(#5817、#10313、#9017)。
- 在 Buildifier 中添加跨文件分析器,检查是否存在已弃用的函数。
性能:
- 将 Bazel 自有 Java 测试的速度提升到原来的 2 倍。
- 实现 Starlark CPU 性能分析器。
减少技术债务:
- 移除了 8 个不兼容的标志(翻转后)。
- 完成 lib.syntax 清理工作(破坏依赖项)。
- Starlark 优化:平面环境、字节码编译
- 如果可能,请从分析阶段删除所有序列化数据
- 制定简化/优化 lib.packages 的计划
社区:
- 发布一个术语表,其中包含所有 Bazel 专用术语的定义