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

ยืนยันครั้งล่าสุด: 21-04-2020 (ประวัติการอัปเดต)

ผู้ติดต่อ: laurentlb

เป้าหมาย

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

เรามุ่งเน้น 2 ด้าน ได้แก่

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

ไตรมาส 2 ปี 2020

สร้างสุขภาพและแนวทางปฏิบัติที่ดีที่สุด

  • P0. ไม่สนับสนุนมาโครที่ไม่มีชื่อ และตรวจสอบว่าชื่อเป็นสตริงที่ไม่ซ้ำกัน งานนี้จะมุ่งเน้นที่ Codebase ของ Google แต่อาจส่งผลกระทบต่อเครื่องมือสาธารณะ
  • P0. ทำให้คำสั่ง Buildozer เชื่อถือได้เกี่ยวกับการเลือกและตัวแปร
  • P1. ทำให้ Buildifier นำรายการที่ซ้ำในรายการที่เราไม่ได้จัดเรียงออกเพราะความคิดเห็น
  • P1. อัปเดตโปรแกรมวิเคราะห์โค้ดของ Buildifier เพื่อแนะนำนิพจน์ย่อยที่แทรก
  • P2. ศึกษากรณีการใช้งานสำหรับ Native.existing_rules และเสนอทางเลือก
  • P2. ศึกษากรณีการใช้งานสำหรับไฟล์ 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. ลดเวลาในการตอบสนองของการสร้าง+การทดสอบได้ถึง 50% สำหรับการแก้ไขแพ็กเกจ Java ของ Bazel

ชุมชน:

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

ไตรมาส 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 ทั้งหมด