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

วันที่ รายงานปัญหา ดูแหล่งที่มา ตอนกลางคืน · 7.3 · 7.2 · 7.1 · 7.0 · 6.5

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

ผู้ติดต่อ: laurentlb

เป้าหมาย

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

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

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

ไตรมาส 2 ปี 2020

สร้างเสริมสุขภาพและแนวทางปฏิบัติแนะนำ:

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

ประสิทธิภาพ

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

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

  • หน้า 0 เพิ่มความสามารถในการย้ายสัญลักษณ์ในเครื่องไปยัง 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. ตรวจสอบว่าสามารถพลิก Flag ต่อไปนี้ได้ใน 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

ชุมชน:

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

ไตรมาส 1 ปี 2020

สร้างเสริมสุขภาพและแนวทางปฏิบัติแนะนำ:

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

ประสิทธิภาพ

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

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

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

ชุมชน:

  • เผยแพร่อภิธานศัพท์ที่มีนิยามของคำศัพท์เฉพาะ Bazel ทั้งหมด