Lộ trình Starlark

Báo cáo vấn đề Xem nguồn Nightly/3}

Lần xác minh gần đây nhất: 21/04/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à làm cho Bazel dễ mở rộng hơn. Người dùng có thể dễ dàng triển khai 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 lĩnh vực:

  • Làm cho 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

Xây dựng các phương pháp hay nhất và thông tin về sức khoẻ:

  • P0. Ngăn các macro không có tên và đảm bảo tên là một giá trị cố định chuỗi 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 cung cấp công khai.
  • P0. Đảm bảo các lệnh Buildozer đáng tin cậy về các lựa chọn và biến.
  • Ưu tiên 1. Giúp Buildifier xoá những danh sách trùng lặp trong những danh sách mà chúng tôi không sắp xếp do nhận xét.
  • Ưu tiên 1. Cập nhật công cụ linter của Buildifier để đề xuất nội tuyến các biểu thức nhỏ.
  • Ưu tiên 2. Nghiên cứu các trường hợp sử dụng native.existing_rules và đề xuất lựa chọn thay thế.
  • Ưu tiên 2. Nghiên cứu các trường hợp sử dụng tệp mở đầu và đề xuất các giải pháp thay thế.

Hiệu quả hoạt động:

  • Ưu tiên 1. 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à tính năng 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.
  • Ưu tiên 1. Xoá các cờ đã lỗi thời (một số cờ trong số đó vẫn được sử dụng tại Google, vì vậy, chúng ta cần dọn dẹp cơ sở mã trước): incompatible_always_check_depset_elements, incompatible_disable_deprecated_attr_params, incompatible_no_support_tools_in_action_inputs, incompatible_new_actions_api.
  • Ưu tiên 1. Đảm bảo bạn có thể lật các cờ theo sau trong Bazel 4.0: incompatible_disable_depset_items, incompatible_no_implicit_file_export, incompatible_run_shell_command_string, incompatible_restrict_string_escapes.
  • Ưu tiên 1. Hoàn tất công việc của lib.syntax (dọn dẹp API, phân tách khỏi Bazel).
  • Ưu tiên 2. Giảm 50% độ trễ của bản dựng+kiểm thử của một bản chỉnh sửa bình thường đố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 lấy dữ liệu chưa xử lý, phân loại vấn đề, tạo bản phát hành).
  • Duy trì cơ sở hạ tầng tài liệu của Bazel: tập trung và chuẩn hoá các kiểu CSS trên bazel-website, bazel-blog, tài liệu
  • Tài liệu về Bazel: thêm bài kiểm tra CI cho bản dựng trang web tài liệu e2e để ngăn chặn sự hồi quy.

Quý 1 năm 2020

Xây dựng các phương pháp hay nhất và thông tin về sức khoẻ:

  • 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 phụ thuộc không dùng nữa (#5817, #10313, #9017).
  • Thêm một trình phân tích tệp chéo trong Buildifier, triển khai tính năng kiểm tra các hàm không dùng nữa.

Hiệu quả hoạt động:

  • Giúp các chương trình kiểm thử dựa trên Java của Bazel nhanh hơ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ờ này).
  • Hoàn tất công việc dọn dẹp lib.syntax (phần phụ thuộc ngắt).
  • Tối ưu hoá Starlark: môi trường phẳng, biên dịch mã byte
  • Xoá toàn bộ 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 thuật ngữ chứa định nghĩa của tất cả các thuật ngữ dành riêng cho Bazel