Starlark 路线图

<ph type="x-smartling-placeholder"></ph> 报告问题 查看来源 敬上 每晚 · 7.3。 · 7.2 条 · 7.1敬上 · 7.0。 · 6.5

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

联系人laurentlb

目标

我们的目标是提高 Bazel 的可扩展性。用户应该能够轻松 实施自己的规则,并支持新的语言和工具。我们希望 从而改善编写和维护这些规则的体验。

我们重点关注两个方面:

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

2020 年第 2 季度

培养健康水平和最佳做法:

  • P0。不建议使用没有名称的宏,并确保名称是唯一的 字符串字面量。这项工作的重点是 Google 代码库,但可能会影响 公开提供的工具
  • P0。确保 Buildozer 命令在选择和变量方面可靠。
  • P1.让 Buildifier 移除列表中存在重复项(我们不会由于这些原因) 评论。
  • P1.更新了 Buildifier linter,以建议内嵌简单表达式。
  • 第 2 页。研究 native.existing_rules 的用例并提出替代方案。
  • 第 2 页。研究序言文件的使用场景并提出替代方案。

效果:

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

技术债务减少:

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

社区:

  • rules_python 很活跃,并且得到了社区的良好维护。
  • 持续支持 rules_jvm_external(没有未完成的拉取请求、问题 分类、发布)。
  • 维护 Bazel 文档基础架构:集中化和规范化 CSS bazel-website、bazel-blog、docs 中的各种样式
  • Bazel 文档:为 e2e 文档网站 build 添加 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 专用术语的定义