Lộ trình Starlark

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à 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ọ và hỗ trợ các ngôn ngữ cũng như 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:

  • Làm cho ngôn ngữ và API trở nên đơn giản nhưng mạnh mẽ.
  • Cung cấp công cụ đọc, ghi, cập nhật, gỡ lỗi và kiểm thử mã hiệu quả hơn.

Quý 2 năm 2020

Xây dựng sức khoẻ 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 giá trị cố định dạng 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 trở nên đáng tin cậy đối với các lựa chọn và biến.
  • P1. khiến Buildifier xoá các danh sách trùng lặp trong các danh sách mà chúng ta không sắp xếp dựa trên nhận xét.
  • P1. Cập nhật trình tìm lỗi mã nguồn của Buildifier để đề xuất các biểu thức cùng dòng.
  • P2. Nghiên cứu các trường hợp sử dụng cho native.hiện_quy tắcs và đề xuất các phương án thay thế.
  • P2. Nghiên cứu các trường hợp sử dụng tệp mở đầu và đề xuất phương án thay thế.

Hiệu suất:

  • P1. Tối ưu hoá trình phiên 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 các 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 sạch 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ác cờ tiếp theo có thể lật 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, phân tách khỏi Bazel).
  • P2. Giảm 50% độ trễ bản dựng+kiểm thử của một thao tác chỉnh sửa đơn giản đối với các gói Java của Bazel.

Thẻ Cộng đồng:

  • rules_python đang hoạt động và được cộng đồng duy trì tốt.
  • Hỗ trợ liên tục các quy tắc_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, docs
  • Tài liệu của Bazel: thêm các thử nghiệm 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 sức khoẻ 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 phụ thuộc không dùng nữa (#5817, #10313, #9017).
  • Thêm một trình phân tích tệp trên nhiều tệp 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 chúng).
  • Hoàn tất công việc dọn dẹp lib.syntax (phần phụ thuộc điểm chèn).
  • 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ập kế hoạch để đơn giản hoá/tối ưu hoá lib.packages

Thẻ Cộng đồng:

  • Xuất bản Bảng thuật ngữ có chứa các định nghĩa cho tất cả các thuật ngữ riêng của tiếng Bazel