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

รายงานปัญหา ดูแหล่งที่มา รุ่นรายวัน · 8.0 · 7.4 · 7.3 · 7.2 · 7.1 · 7.0 · 6.5

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

ผู้ติดต่อ: laurentlb

เป้าหมาย

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

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

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

ไตรมาส 2 ปี 2020

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

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

ประสิทธิภาพ

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

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

  • P0 เพิ่มความสามารถในการพอร์ตสัญลักษณ์ของระบบไปยัง Starlark ในส่วน @bazel_tools
  • P1. ลบ Flag ที่ล้าสมัย (บางรายการยังใช้อยู่ใน 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 ลง 50%

ชุมชน:

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

ไตรมาส 1 ปี 2020

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

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

ประสิทธิภาพ

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

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

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

ชุมชน:

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