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

ภาพรวม

โปรเจ็กต์ Bazel มีการพัฒนาอย่างต่อเนื่องเพื่อตอบสนองความต้องการของคุณ โดยจะพัฒนาฟีเจอร์และให้การสนับสนุนไปพร้อมๆ กับการดูแลรักษา ปรับโครงสร้าง และปรับปรุงประสิทธิภาพของผลิตภัณฑ์หลัก

การเปลี่ยนแปลงเหล่านี้มีขึ้นเพื่อแจ้งข้อมูลและรวมชุมชนโอเพนซอร์สของเราไว้ด้วยกัน แผนงานนี้อธิบายความคิดริเริ่มปัจจุบันและการคาดการณ์เกี่ยวกับการพัฒนา Bazel ในอนาคต ซึ่งจะช่วยให้คุณเห็นลำดับความสำคัญปัจจุบันและโปรเจ็กต์ที่กำลังดำเนินการอยู่

แผนงานนี้แสดงเป้าหมายโดยย่อและไม่ควรถือเป็นการรับประกัน ลำดับความสำคัญอาจมีการเปลี่ยนแปลงเพื่อตอบสนองความคิดเห็นจากนักพัฒนาแอปและลูกค้า หรือโอกาสใหม่ๆ ในตลาด

หากต้องการรับการแจ้งเตือนเกี่ยวกับฟีเจอร์ใหม่ๆ รวมถึงการอัปเดตแผนงานนี้ โปรดเข้าร่วมชุมชน Google Group

ไตรมาสที่ 4 - การเปิดตัว Bazel 6.0

ไตรมาสที่ 4 จะมีการเปิดตัว Bazel 6.0 ซึ่งเป็นเวอร์ชันการสนับสนุนระยะยาว (LTS)ใหม่ Bazel 6.0 มีแผนที่จะรวมฟีเจอร์ใหม่ที่มีประสิทธิภาพและชุมชนขอมาสำหรับการจัดการทรัพยากร Dependency การพัฒนาด้วย Android และอื่นๆ

Bzlmod: ระบบจัดการทรัพยากร Dependency ภายนอก

Bzlmod จะแก้ปัญหาทรัพยากร Dependency แบบทรานซิทีฟโดยอัตโนมัติ ซึ่งช่วยให้โปรเจ็กต์ปรับขนาดได้โดยยังคงความเร็วและประสิทธิภาพด้านทรัพยากรไว้ Bzlmod ซึ่งเปิดตัวใน Bazel 5.0 ในรูปแบบทดลองใช้จะพร้อมใช้งานโดยทั่วไปและเป็นโซลูชันสำหรับปัญหาทรัพยากร Dependency แบบ ไดมอนด์

  • Bzlmod เปลี่ยนจาก "ทดลองใช้" เป็น "พร้อมใช้งานโดยทั่วไป"
  • รวมการรองรับ rules\_jvm\_external ซึ่งช่วยให้ผู้ใช้ดาวน์โหลดทรัพยากร Dependency ของ Maven สำหรับโปรเจ็กต์ Java ได้
  • คู่มือการย้ายข้อมูล Bzlmod มีเครื่องมือ สคริปต์ และเอกสารประกอบสำหรับทีมที่ต้องการใช้ Bzlmod
  • ที่เก็บส่วนกลางของ Bazel จะโฮสต์กฎ BUILD หลักของ Bazel (rules\_jvm\_external, rules\_go, rules\_python, rules\_nodejs) และทรัพยากร Dependency หลักที่จำเป็นสำหรับ Bzlmod

ดูข้อมูลเพิ่มเติมเกี่ยวกับการพัฒนาได้ที่การอัปเดตชุมชน Bzlmod หรืออ่านเอกสารการออกแบบต้นฉบับ

การสร้างแอป Android ด้วย Bazel

Bazel 6.0 จะมีเครื่องมือที่ได้รับการปรับปรุงและรวมการมีส่วนร่วมของฟีเจอร์ชุมชนไว้ด้วย ทีม Bazel จะให้ความสำคัญกับการผสานรวมเครื่องมือสร้าง Android กับกฎ Bazel Android โดยคาดการณ์ว่าจะมีผู้ใช้เพิ่มขึ้นและฐานของโค้ดจะขยายใหญ่ขึ้น

  • อัปเดต D8 เป็นเวอร์ชัน 3.3.28 และตั้งค่าเป็น Dexer เริ่มต้น
  • รวมการมีส่วนร่วมของฟีเจอร์ชุมชนหลักที่เพิ่มใน 5.X ซึ่งรวมถึงการรองรับรายการต่อไปนี้
    • เวิร์กเกอร์แบบถาวรด้วย D8
    • Desugaring โดยใช้ D8
    • การผสานแท็ก "uses-permissions" ในไฟล์ Manifest ของ Android
    • เวิร์กเกอร์แบบมัลติเพล็กซ์ในการประมวลผลทรัพยากร Android

Toolchain ที่ไม่บังคับ

แบบสำรวจความพึงพอใจของนักพัฒนาแอปแสดงให้เห็นว่าผู้เขียนกฎต้องการการรองรับการพัฒนา Toolchain เพิ่มเติม Bazel 6.0 จะอนุญาตให้ผู้เขียนเขียนกฎโดยใช้ Toolchain ประสิทธิภาพสูงที่ไม่บังคับ เมื่อพร้อมใช้งานพร้อมการใช้งานแบบสำรองสำหรับแพลตฟอร์มอื่นๆ

การรองรับ Bazel-JetBrains* IntelliJ IDEA

JetBrains ได้ร่วมมือกับ Bazel เพื่อดูแลปลั๊กอิน Bazel IntelliJ IDEAร่วมกัน ซึ่งสนับสนุนเป้าหมายในการเพิ่มการดูแลของชุมชนและเปิดโอกาสให้มีการขอฟีเจอร์และการพัฒนา

  • ปลั๊กอิน IntelliJ เวอร์ชัน 2022.2 รองรับการเปิดตัวปลั๊กอิน JetBrains ล่าสุด
  • เพิ่มความเข้ากันได้กับการพัฒนาจากระยะไกล
  • ส่งเสริมการพัฒนาที่ขับเคลื่อนโดยชุมชนสำหรับฟีเจอร์ที่กำลังพัฒนา เช่น การรองรับ Scala

ดูข้อมูลเพิ่มเติมเกี่ยวกับการพัฒนาได้ที่ประกาศในบล็อก Bazel-JetBrains blog announcement

การพัฒนาในอนาคต

ทีม Bazel ได้เริ่มพัฒนาหรือคาดว่าจะให้ความสำคัญกับฟีเจอร์ต่อไปนี้ในปี 2023 และหลังจากนั้น

การปรับปรุงกฎการสร้าง Android ของ Bazel

ลงทุนต่อไปในประสบการณ์การพัฒนาแอป Android โดยมุ่งเน้นที่เวิร์กโฟลว์ผ่านการสร้าง การทดสอบ และการติดตั้งใช้งาน

  • การย้ายข้อมูลไปยัง R8 และการรองรับ R8
  • การอัปเดตกฎ Android รวมถึงการแปลเป็นภาษา Starlark
  • การรองรับ App Bundle
  • การรองรับ NDK เวอร์ชันล่าสุด
  • การครอบคลุมของโค้ดการทดสอบ

เครื่องมือการปฏิบัติตามข้อกำหนดของใบอนุญาต OSS

นักพัฒนาแอปขอตัวตรวจสอบการปฏิบัติตามข้อกำหนดของใบอนุญาตที่มีประสิทธิภาพเพื่อให้มั่นใจว่าแพ็กเกจที่รวมไว้จะพร้อมใช้งานและปลอดภัย โปรเจ็กต์นี้มีชุดกฎและเครื่องมือที่จะช่วยระบุและลดความเสี่ยงด้านการปฏิบัติตามข้อกำหนดและใบอนุญาตที่เกี่ยวข้องกับคอมโพเนนต์ซอฟต์แวร์ที่กำหนด ฟีเจอร์เป้าหมาย ได้แก่

  • ความสามารถในการตรวจสอบแพ็กเกจที่เป้าหมายที่กำหนดใช้
  • ความสามารถในการสร้างการตรวจสอบการปฏิบัติตามข้อกำหนดของใบอนุญาตที่เฉพาะเจาะจงขององค์กร

ดูการใช้งาน rules_license ที่อยู่ระหว่างดำเนินการ ใน GitHub

Bzlmod: ระบบจัดการทรัพยากร Dependency ภายนอก

เมื่อเปิดตัว Bzlmod จะปรับปรุงความสามารถในการปรับขนาดและความน่าเชื่อถือของทรัพยากร Dependency แบบทรานซิทีฟ ในอีก 3 ปีข้างหน้า Bzlmod มีเป้าหมายที่จะแทนที่ WORKSPACE ในฐานะระบบย่อยสำหรับการจัดการทรัพยากร Dependency ของพื้นที่ทำงาน Bazel เริ่มต้น ฟีเจอร์เป้าหมาย ได้แก่

  • การรองรับบิวด์แบบเฮอร์เมติก
  • โหมดผู้ให้บริการ/โหมดออฟไลน์จะปักหมุดกฎการอ้างอิงแบบเวอร์ชันไว้กับสำเนาในเครื่อง
  • รีจิสทรีส่วนกลางของ Bazel มีการมีส่วนร่วมของชุมชนและการนำกฎและโปรเจ็กต์หลักของ Bazel ไปใช้เป็นประจำ
  • Bzlmod จะกลายเป็นเครื่องมือเริ่มต้นสำหรับการสร้างโปรเจ็กต์ Bazel

บิวด์ที่ลงชื่อแล้ว

Bazel จะมีไบนารีที่เชื่อถือได้สำหรับ Windows และ Mac ซึ่งลงชื่อด้วยคีย์ของ Google ฟีเจอร์นี้ช่วยให้นักพัฒนาแอป/DevOps หลายแพลตฟอร์มระบุแหล่งที่มาของไบนารี Bazel และปกป้องระบบจากไบนารีที่ไม่พึงประสงค์และไม่ได้รับการยืนยัน

API ของแพลตฟอร์มที่ได้มาตรฐาน

API ของแพลตฟอร์มใหม่จะกำหนดค่าการกำหนดค่าสถาปัตยกรรมให้เป็นมาตรฐานสำหรับการสร้างหลายภาษาและหลายแพลตฟอร์ม ฟีเจอร์นี้ช่วยให้นักพัฒนาแอปสามารถลดข้อผิดพลาดที่เสียค่าใช้จ่ายและลดความซับซ้อนในการสร้างขนาดใหญ่

เมตริกการวิเคราะห์บิวด์

การวัดและส่งข้อมูลทางไกลของ Bazel จะให้เมตริกเวลาของระยะการวิเคราะห์ ซึ่งช่วยให้นักพัฒนาซอฟต์แวร์เพิ่มประสิทธิภาพบิลด์ของตนเองได้

การดำเนินการจากระยะไกลด้วย “บิวด์ที่ไม่มีไบต์”

บิวด์ที่ไม่มีไบต์ จะเพิ่มประสิทธิภาพโดยอนุญาตให้ Bazel ดาวน์โหลดเฉพาะอาร์ติแฟกต์ที่จำเป็นเท่านั้น ซึ่งจะช่วยป้องกันไม่ให้บิวด์เกิดคอขวดเนื่องจากแบนด์วิดท์เครือข่าย ฟีเจอร์ที่เพิ่มสำหรับการสร้างจากระยะไกล ได้แก่

  • ใช้การดาวน์โหลดแบบไม่พร้อมกันเพื่อให้การดำเนินการในเครื่องและการดำเนินการจากระยะไกลเริ่มต้นขึ้นทันทีที่ดาวน์โหลดเอาต์พุตที่ขึ้นอยู่กับเอาต์พุตเหล่านั้น
  • เพิ่มการรองรับ Symlink
  • ดึงข้อมูลเอาต์พุตระดับกลางจากการดำเนินการจากระยะไกลเมื่อบิลด์เสร็จสมบูรณ์

*Copyright © 2022 JetBrains s.r.o. JetBrains และ IntelliJ เป็นเครื่องหมายการค้าจดทะเบียนของ JetBrains s.r.o.