แผนกลยุทธ์ของ Starlark

ตรวจสอบล่าสุด: 21-04-2020 (ประวัติการอัปเดต)

ผู้ติดต่อ: laurentlb

เป้าหมาย

เป้าหมายของเราคือการทำให้ Bazel ขยายได้มากขึ้น ผู้ใช้ควรจะสามารถใช้กฎของตนเองได้อย่างง่ายดาย รวมถึงรองรับภาษาและเครื่องมือใหม่ๆ เราต้องการปรับปรุงประสบการณ์การเขียนและดูแลรักษากฎเหล่านั้น

เรามุ่งเน้นที่ 2 ด้านต่อไปนี้

  • ทำให้ภาษาและ API เรียบง่ายแต่ทรงพลัง
  • จัดหาเครื่องมือที่ดีขึ้นสำหรับการอ่าน การเขียน การอัปเดต การแก้ไขข้อบกพร่อง และการทดสอบโค้ด

ไตรมาส 2 ปี 2020

ความสมบูรณ์ของบิลด์และแนวทางปฏิบัติแนะนำ

  • P0 ไม่แนะนำให้ใช้มาโครที่ไม่มีชื่อ และตรวจสอบว่าชื่อเป็นสตริงลิเทอรัลที่ไม่ซ้ำกัน งานนี้มุ่งเน้นที่ฐานของโค้ด Google แต่ก็อาจส่งผลต่อเครื่องมือที่พร้อมใช้งานแบบสาธารณะ
  • P0 ทำให้คำสั่ง Buildozer เชื่อถือได้มากขึ้นในส่วนของการเลือกและตัวแปร
  • P1 ทำให้ Buildifier นำรายการที่ซ้ำกันในรายการที่เราไม่ได้จัดเรียงเนื่องจากความคิดเห็นออก
  • P1 อัปเดต Buildifier Linter เพื่อแนะนำการแทรกนิพจน์ที่ไม่สำคัญ
  • P2 ศึกษา Use Case สำหรับ native.existing_rules และเสนอตัวเลือกอื่น
  • P2 ศึกษา Use Case สำหรับไฟล์ Prelude และเสนอตัวเลือกอื่น

ประสิทธิภาพ

  • P1 เพิ่มประสิทธิภาพตัวแปล Starlark โดยใช้สภาพแวดล้อมแบบแบนและการคอมไพล์โค้ดไบต์

การลดหนี้สินทางเทคนิค

  • P0 เพิ่มความสามารถในการย้ายสัญลักษณ์ดั้งเดิมไปยัง Starlark ภายใต้ @bazel_tools
  • P1 ลบแฟล็กที่ล้าสมัย (บางแฟล็กยังคงใช้ใน Google ดังนั้นเราจึงต้องล้างฐานของโค้ดก่อน) ได้แก่ incompatible_always_check_depset_elements, incompatible_disable_deprecated_attr_params, incompatible_no_support_tools_in_action_inputs, incompatible_new_actions_api
  • P1 ตรวจสอบว่าแฟล็กต่อไปนี้สามารถเปลี่ยนได้ใน Bazel 4.0 ได้แก่ incompatible_disable_depset_items, incompatible_no_implicit_file_export, incompatible_run_shell_command_string, incompatible_restrict_string_escapes
  • P1 ทำงาน lib.syntax ให้เสร็จสมบูรณ์ (การล้าง API, การแยกออกจาก Bazel)
  • P2 ลดเวลาในการสร้างและทดสอบการแก้ไขเล็กน้อยในแพ็กเกจ Java ของ Bazel ลง 50%

ชุมชน

  • rules_python มีการใช้งานและชุมชนดูแลรักษาอย่างดี
  • การสนับสนุน rules_jvm_external อย่างต่อเนื่อง (ไม่มีคำขอพุลที่ค้างอยู่ การจัดลำดับความสำคัญของปัญหา การเผยแพร่)
  • ดูแลรักษาโครงสร้างพื้นฐานของเอกสารประกอบ Bazel: รวมศูนย์และกำหนดรูปแบบ CSS ที่เป็นมาตรฐานใน bazel-website, bazel-blog, docs
  • เอกสารประกอบ Bazel: เพิ่มการทดสอบ CI สำหรับการสร้างเว็บไซต์เอกสารประกอบแบบ end-to-end เพื่อป้องกันการถดถอย

ไตรมาส 1 ปี 2020

ความสมบูรณ์ของบิลด์และแนวทางปฏิบัติแนะนำ

  • อนุญาตให้เป้าหมายติดตามสแต็กการเรียกใช้มาโครเพื่อส่งออกผ่าน bazel query
  • ใช้ --incompatible_no_implicit_file_export
  • นำ API ของ Depset ที่เลิกใช้งานแล้วออก (#5817, #10313, #9017)
  • เพิ่มเครื่องมือวิเคราะห์ข้ามไฟล์ใน Buildifier และใช้การตรวจสอบฟังก์ชันที่เลิกใช้งานแล้ว

ประสิทธิภาพ

  • ทำให้การทดสอบที่อิงตาม Java ของ Bazel เร็วขึ้น 2 เท่า
  • ใช้โปรแกรมสร้างโปรไฟล์ CPU ของ Starlark

การลดหนี้สินทางเทคนิค

  • นำแฟล็กที่ไม่เข้ากัน 8 รายการออก (หลังจากเปลี่ยนแล้ว)
  • ทำงาน lib.syntax ให้เสร็จสมบูรณ์ (การแยกทรัพยากร Dependency)
  • การเพิ่มประสิทธิภาพ Starlark: สภาพแวดล้อมแบบแบน การคอมไพล์โค้ดไบต์
  • ลบการซีเรียลไลซ์ทั้งหมดออกจากระยะการวิเคราะห์ หากเป็นไปได้
  • จัดทำแผนการทำให้ lib.packages ง่ายขึ้น/เพิ่มประสิทธิภาพ

ชุมชน

  • เผยแพร่พจนานุกรมคำศัพท์ที่มีคำจำกัดความของคำศัพท์เฉพาะของ Bazel ทั้งหมด