ภาพรวม
โปรเจ็กต์ Bazel มีการพัฒนาอย่างต่อเนื่องเพื่อตอบสนองความต้องการของคุณ โดยจะพัฒนาฟีเจอร์และให้การสนับสนุนไปพร้อมๆ กับการดูแลรักษา ปรับโครงสร้าง และปรับปรุงประสิทธิภาพของผลิตภัณฑ์หลัก
การเปลี่ยนแปลงเหล่านี้มีขึ้นเพื่อให้ชุมชนโอเพนซอร์สของเราได้รับข้อมูลและมีส่วนร่วมอยู่เสมอ แผนงานนี้อธิบายความคิดริเริ่มในปัจจุบันและการคาดการณ์เกี่ยวกับการพัฒนา Bazel ในอนาคต ซึ่งจะช่วยให้คุณเห็นลำดับความสำคัญในปัจจุบันและโปรเจ็กต์ที่กำลังดำเนินการอยู่
แผนงานนี้แสดงภาพรวมของเป้าหมายและไม่ควรถือเป็นการรับประกัน ลำดับความสำคัญอาจมีการเปลี่ยนแปลงเพื่อตอบสนองความคิดเห็นจากนักพัฒนาแอปและลูกค้า หรือโอกาสทางการตลาดใหม่ๆ
หากต้องการรับการแจ้งเตือนเกี่ยวกับฟีเจอร์ใหม่ๆ รวมถึงการอัปเดตแผนงานนี้ โปรดเข้าร่วมชุมชน Google Groups
ไตรมาสที่ 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 กับกฎ Android ของ Bazel เพื่อเตรียมพร้อมสำหรับการใช้งานที่เพิ่มขึ้นและฐานของโค้ดที่ขยายใหญ่ขึ้น
- อัปเดต D8 เป็นเวอร์ชัน 3.3.28 และตั้งค่าเป็น dexer เริ่มต้น
- รวมการมีส่วนร่วมของฟีเจอร์จากชุมชนหลักที่เพิ่มเข้ามาในเวอร์ชัน 5.X ซึ่งรวมถึงการรองรับฟีเจอร์ต่อไปนี้
- เวิร์กเกอร์แบบถาวรด้วย D8
- Desugaring โดยใช้ D8
- การผสานแท็ก "uses-permissions" ในไฟล์ Android Manifest
- เวิร์กเกอร์แบบมัลติเพล็กซ์ในการประมวลผลทรัพยากร 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.