ภาพรวม
โปรเจ็กต์ 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.