แผนกลยุทธ์ Starlark

รายงานปัญหา ดูแหล่งที่มา

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

ผู้ติดต่อ: larentlb

เป้าหมาย

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

เราให้ความสําคัญกับ 2 ด้านต่อไปนี้

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

ไตรมาส 2 ปี 2020

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

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

ประสิทธิภาพ

  • 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)
  • หน้า 2 ลดเวลาในการตอบสนอง +00% ของการแก้ไขเพียงเล็กน้อยในแพ็กเกจ Java ของ Bazel

ชุมชน:

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

ไตรมาส 1 ปี 2020

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

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

ประสิทธิภาพ

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

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

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

ชุมชน:

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