Lộ trình Starlark

Báo cáo vấn đề Xem nguồn Ban đêm · 8.0 · 7.4 · 7.3 · 7.2 · 7.1 · 7.0 · 6.5

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 dễ mở rộng hơn. Người dùng phải 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 hai khía cạnh:

  • Giúp ngôn ngữ và API đơn giản nhưng mạnh mẽ.
  • Cung cấp công cụ tốt hơn để đọc, ghi, cập nhật, gỡ lỗi và kiểm thử mã.

Quý 2 năm 2020

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

  • P0. Không nên sử dụng macro không có tên và đảm bảo tên là một chuỗi cố định duy nhấ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. Tăng độ tin cậy của các lệnh Buildozer liên quan đến các lựa chọn và biến.
  • P1. Yêu cầu Buildifier xoá các mục trùng lặp trong danh sách mà chúng ta không sắp xếp do các nhận xét.
  • P1. Cập nhật trình tìm lỗi mã nguồn Buildifier để đề xuất nội tuyến các biểu thức tầm thường.
  • P2. Nghiên cứu các trường hợp sử dụng cho native.existing_rules và đề xuất các giải pháp thay thế.
  • P2. Nghiên cứu các trường hợp sử dụng của tệp prelude và đề xuất các giải pháp 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 môi trường phẳng và biên dịch mã byte.

Giảm nợ kỹ thuật:

  • P0. Thêm khả năng chuyển biểu tượng gốc sang Starlark bên dưới @bazel_tools.
  • P1. Xoá các cờ lỗi thời (một số cờ vẫn được sử 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 bạn có thể bật/tắt các cờ sau 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ễ bản dựng+kiểm thử của một nội dung chỉnh sửa nhỏ đố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 và chuẩn hoá các kiểu CSS trên trang web bazel, blog bazel, tài liệu
  • Tài liệu về Bazel: thêm các chương trình kiểm thử CI cho bản dựng trang web tài liệu e2e để ngăn chặn các trường hợp hồi quy.

Quý 1 năm 2020

Tình trạng của 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 của chúng, để 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 trình phân tích tệp chéo trong Buildifier, triển khai quy trình kiểm tra các hàm không dùng nữa.

Hiệu suất:

  • Tăng tốc độ kiểm thử dựa trên Java của Bazel lên gấp 2 lần.
  • 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 các cờ đó).
  • 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 phẳng, 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ên kế hoạch đơn giản hoá/tối ưu hoá lib.packages

Cộng đồng:

  • Phát hành Bảng thuật ngữ chứa định nghĩa cho tất cả các thuật ngữ dành riêng cho Bazel