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

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

ผู้ติดต่อ: laurentlb

เป้าหมาย

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

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

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

ไตรมาส 2 ปี 2020

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

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

ชุมชน:

  • rules_python มีการใช้งานและได้รับการดูแลอย่างดีจากชุมชน
  • การสนับสนุนอย่างต่อเนื่องสำหรับ rules_jvm_external (ไม่มีคำขอพุลที่รอดำเนินการ การจัดลำดับความสำคัญของปัญหา การเผยแพร่)
  • ดูแลโครงสร้างพื้นฐานของเอกสารประกอบ Bazel: จัดรูปแบบ CSS ให้เป็นมาตรฐานและรวมไว้ที่เดียวในเว็บไซต์ bazel, บล็อก bazel และเอกสารประกอบ
  • เอกสาร 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 ให้เสร็จสิ้น (แยกการอ้างอิง)
  • การเพิ่มประสิทธิภาพ Starlark: สภาพแวดล้อมแบบแบน การคอมไพล์โค้ดไบต์
  • ลบการทำให้เป็นอนุกรมทั้งหมดจากระยะการวิเคราะห์ หากเป็นไปได้
  • วางแผนการลดความซับซ้อน/เพิ่มประสิทธิภาพ lib.packages

ชุมชน:

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