Starlark 路线图

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

上次验证时间:2020 年 4 月 21 日更新记录

联系人laurentlb

目标

我们的目标是让 Bazel 变得更加可扩展。用户应能够轻松实现自己的规则,并支持新语言和工具。我们希望改进编写和维护这些规则的体验。

我们将重点关注以下两个方面:

  • 使语言和 API 简单而强大。
  • 提供更好的工具来读取、写入、更新、调试和测试代码。

2020 年第 2 季度

build 健康度和最佳实践:

  • P0. 不鼓励使用没有名称的宏,并确保名称是唯一的字符串字面量。这项工作侧重于 Google 代码库,但可能会影响公开提供的工具。
  • P0. 使 Buildozer 命令在选择和变量方面可靠。
  • P1. 让 Buildifier 移除因注释而未排序的列表中的重复项。
  • P1. 更新了 Buildifier lint 工具,以建议内嵌琐碎表达式。
  • P2. 研究 native.existing_rule 的使用情形,并提出替代方案。
  • P2. 研究序曲文件的用例,并提出替代方案。

效果:

  • P1. 使用扁平环境和字节码编译优化 Starlark 解释器。

减少技术债务:

  • P0. 添加了将原生符号移植到 @bazel_tools 下的 Starlark 的功能。
  • P1. 删除了已废弃的标志(其中一些标志仍在 Google 中使用,因此我们需要先清理代码库):incompatible_always_check_depset_elementsincompatible_disable_deprecated_attr_paramsincompatible_no_support_tools_in_action_inputsincompatible_new_actions_api
  • P1. 确保可以在 Bazel 4.0 中翻转以下标志:incompatible_disable_depset_itemsincompatible_no_implicit_file_exportincompatible_run_shell_command_stringincompatible_restrict_string_escapes
  • P1. 完成 lib.syntax 工作(API 清理、与 Bazel 分离)。
  • P2. 将对 Bazel 的 Java 软件包进行简单修改的构建+测试延迟时间缩短了 50%。

社区:

  • rules_python 由社区积极维护,且处于活跃状态。
  • 持续支持 rules_jvm_external(没有待处理的拉取请求、问题分类、发布版本)。
  • 维护 Bazel 文档基础架构:集中管理和规范化 bazel-website、bazel-blog 和文档中的 CSS 样式
  • Bazel 文档:为 e2e 文档网站构建添加了 CI 测试,以防止回归问题。

2020 年第 1 季度

build 健康度和最佳实践:

  • 允许目标跟踪其宏调用堆栈,以便通过 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 专用术语定义的术语表