Lộ trình Starlark

Lần xác minh gần đây nhất: 21/4/2020 (nhật ký cập nhật)

Đầu mối liên hệ: laurentlb

Mục tiêu

Mục tiêu của chúng tôi là giúp Bazel có khả năng mở rộng hơn. Người dùng có thể dễ dàng triển khai các quy tắc của riêng họ, đồng thời hỗ trợ các ngôn ngữ và công cụ mới. Chúng tôi muốn cải thiện trải nghiệm viết và duy trì các quy tắc đó.

Chúng tôi tập trung vào 2 lĩnh vực:

  • Hãy tạo ra một ngôn ngữ và API đơn giản nhưng mạnh mẽ.
  • Cung cấp công cụ tốt hơn để đọc, viết, cập nhật, gỡ lỗi và kiểm thử mã.

Quý 2 năm 2020

Tình trạng bản dựng và Các phương pháp hay nhất:

  • P0. Không khuyến khích các macro không có tên và đảm bảo tên là một chuỗi ký tự riêng biệt. Công việc này tập trung vào cơ sở mã của Google, nhưng có thể ảnh hưởng đến các công cụ có sẵn công khai.
  • P0. Đảm bảo các lệnh Buildozer đáng tin cậy liên quan đến lựa chọn và biến.
  • P1. Yêu cầu Buildifier xoá các mục trùng lặp trong những danh sách mà chúng ta không sắp xếp do có nhận xét.
  • P1. Cập nhật trình kiểm tra Buildifier để đề xuất nội dung biểu thức không đáng kể.
  • P2. Nghiên cứu các trường hợp sử dụng cho native.existing_rules và đề xuất các lựa chọn thay thế.
  • P2. Nghiên cứu các trường hợp sử dụng cho tệp mở đầu và đề xuất các lựa chọn thay thế.

Hiệu suất:

  • P1. Tối ưu hoá trình thông dịch Starlark bằng cách sử dụng các môi trường phẳng và quá trình biên dịch mã byte.

Giảm nợ kỹ thuật:

  • P0. Thêm khả năng chuyển các biểu tượng gốc sang Starlark bên dưới @bazel_tools.
  • P1. Xoá các cờ không còn dùng nữa (một số cờ vẫn được dùng tại Google, vì vậy, trước tiên, chúng ta cần dọn dẹp cơ sở mã): incompatible_always_check_depset_elements, incompatible_disable_deprecated_attr_params, incompatible_no_support_tools_in_action_inputs, incompatible_new_actions_api.
  • P1. Đảm bảo có thể chuyển đổi các cờ sau đây trong Bazel 4.0: incompatible_disable_depset_items, incompatible_no_implicit_file_export, incompatible_run_shell_command_string, incompatible_restrict_string_escapes.
  • P1. Hoàn tất công việc lib.syntax (dọn dẹp API, tách khỏi Bazel).
  • P2. Giảm 50% độ trễ khi tạo và kiểm thử một nội dung chỉnh sửa không đáng kể đối với các gói Java của Bazel.

Cộng đồng:

  • rules_python đang hoạt động và được cộng đồng duy trì tốt.
  • Hỗ trợ liên tục cho rules_jvm_external (không có yêu cầu kéo nào đang chờ xử lý, phân loại vấn đề, phát hành).
  • Duy trì cơ sở hạ tầng tài liệu Bazel: tập trung hoá và chuẩn hoá các kiểu CSS trên bazel-website, bazel-blog, docs
  • Tài liệu Bazel: thêm các kiểm thử CI cho bản dựng trang web tài liệu e2e để ngăn chặn các lỗi hồi quy.

Quý 1 năm 2020

Tình trạng bản dựng và Các phương pháp hay nhất:

  • Cho phép các mục tiêu theo dõi ngăn xếp lệnh gọi macro để xuất qua bazel query
  • Triển khai --incompatible_no_implicit_file_export
  • Xoá các API depset không dùng nữa (#5817, #10313, #9017).
  • Thêm một trình phân tích trên nhiều tệp trong Buildifier, triển khai một quy trình kiểm tra cho các hàm không dùng nữa.

Hiệu suất:

  • Tăng tốc gấp 2 lần các kiểm thử dựa trên Java của Bazel.
  • Triển khai trình phân tích CPU Starlark.

Giảm nợ kỹ thuật:

  • Xoá 8 cờ không tương thích (sau khi lật).
  • Hoàn tất công việc dọn dẹp lib.syntax (phá vỡ các phần phụ thuộc).
  • Tối ưu hoá Starlark: môi trường đơn giản, biên dịch mã byte
  • Xoá tất cả quá trình chuyển đổi tuần tự khỏi giai đoạn phân tích (nếu có thể)
  • Lập kế hoạch đơn giản hoá/tối ưu hoá lib.packages

Cộng đồng:

  • Xuất bản một Bảng chú giải chứa định nghĩa cho tất cả các thuật ngữ dành riêng cho Bazel