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

รายงานปัญหา ดูแหล่งที่มา /3} /4} {3/4} {3/4} {3/4} {3/4} /4.

ยืนยันครั้งล่าสุด: 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. ตรวจสอบว่าสามารถพลิกแฟล็กต่อไปนี้ใน 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 ทั้งในเว็บไซต์ 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 ทั้งหมด