ภาพรวม
โปรเจ็กต์ 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 ของ Diamond
- Bzlmod เปลี่ยนจาก "ขั้นทดลอง" เป็น "พร้อมใช้งานโดยทั่วไป"
- มีการรองรับ
rules\_jvm\_external
ซึ่งช่วยให้ผู้ใช้ดาวน์โหลดทรัพยากร Dependency ของ Maven สำหรับโปรเจ็กต์ Java ได้ - คู่มือการย้ายข้อมูล Bzlmod มีเครื่องมือ สคริปต์ และเอกสารประกอบให้กับทีมที่ต้องการใช้งาน Bzlmod
- ที่เก็บส่วนกลางของ Bazel โฮสต์กฎหลักของ Bazel
BUILD
(rules\_jvm\_external
,rules\_go
,rules\_python
,rules\_nodejs
) และทรัพยากร Dependency ของคีย์ที่จำเป็นสำหรับ Bzlmod
หากต้องการข้อมูลเพิ่มเติมเกี่ยวกับการพัฒนานี้ โปรดดูการอัปเดตชุมชน Bzlmod หรืออ่านเอกสารการออกแบบต้นฉบับ
แอป Android ที่สร้างโดยใช้ Bazel
Bazel 6.0 จะมีเครื่องมือที่ได้รับการปรับปรุงและฟีเจอร์ในชุมชนที่ผสานรวมเข้าด้วยกัน ทีม Bazel จะให้ความสำคัญกับการผสานรวมเครื่องมือสร้าง Android เข้ากับกฎ Android ของ Bazel ที่คาดว่าจะนำไปใช้งานเพิ่มเติมและฐานของโค้ดที่เพิ่มขึ้น
- อัปเดต D8 เป็น v. 3.3.28 และตั้งค่าเป็น Dexer เริ่มต้น
- รวมกับการสนับสนุนฟีเจอร์หลักของชุมชนที่เพิ่มเข้ามาใน 5.X รวมถึงการสนับสนุนสำหรับสิ่งต่างๆ ต่อไปนี้
- ผู้ปฏิบัติงานต่อเนื่องที่มี D8
- กำจัดน้ำตาลโดยใช้ D8
- การรวม "uses-permissions" แท็กในไฟล์ Manifest ของ Android
- ผู้ปฏิบัติงาน Multiplex ในการประมวลผลทรัพยากรของ Android
Toolchains ที่ไม่บังคับ
แบบสำรวจความพึงพอใจของนักพัฒนาแอปของเราแสดงให้เห็นว่าผู้เขียนกฎต้องการการสนับสนุนสำหรับการพัฒนาเครื่องมือเชนเพิ่มเติม Bazel 6.0 จะช่วยให้ผู้เขียนเขียนกฎได้โดยใช้เครื่องมือเชนประสิทธิภาพสูงที่ไม่บังคับ เมื่อพร้อมใช้งานสำหรับแพลตฟอร์มอื่นๆ สำรอง
การสนับสนุน IntelliJ IDEA ของ Bazel-JetBrains*
JetBrains ร่วมมือกับ Bazel เพื่อร่วมดูแลจัดการปลั๊กอิน Bazel IntelliJ IDEA ที่สนับสนุนเป้าหมายในการเพิ่มการดูแลของชุมชน รวมถึงเพิ่มโอกาสในการส่งคำขอและการพัฒนาฟีเจอร์
- ปลั๊กอิน IntelliJ เวอร์ชัน 2022.2 รองรับปลั๊กอิน JetBrains รุ่นล่าสุด
- เพิ่มความเข้ากันได้ด้วยการพัฒนาจากระยะไกล
- พัฒนาการพัฒนาที่ขับเคลื่อนโดยชุมชนเพิ่มเติมสำหรับฟีเจอร์ที่ใช้งานอยู่ เช่น การสนับสนุน Scala
สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการพัฒนานี้ โปรดอ่านประกาศของบล็อก Bazel-JetBrains
การพัฒนาในอนาคต
เมื่อมองไปในอนาคต ทีม Bazel ได้เริ่มพัฒนาหรือคาดการณ์การให้ความสำคัญกับฟีเจอร์ต่อไปนี้ในปี 2023 และปีต่อๆ ไป
การปรับปรุงกฎบิลด์ของ Android ของ Bazel
ลงทุนกับประสบการณ์การพัฒนาแอป Android อย่างต่อเนื่อง โดยมุ่งเน้นกระบวนการทำงานผ่านการสร้าง การทดสอบ และการใช้งาน
- การย้ายข้อมูลไปยังและรองรับ R8
- การอัปเดตกฎของ Android รวมถึงการแปลเป็นภาษา Starlark
- การรองรับ App Bundle
- รองรับ NDK เวอร์ชันล่าสุด
- ทดสอบการครอบคลุมของโค้ด
เครื่องมือในการปฏิบัติตามข้อกำหนดของใบอนุญาต OSS
นักพัฒนาแอปได้ขอให้มีการตรวจสอบการปฏิบัติตามข้อกำหนดของใบอนุญาตที่มีประสิทธิภาพเพื่อให้มั่นใจว่าแพ็กเกจที่รวมไว้พร้อมใช้งานและมีความปลอดภัย โครงการนี้มีชุดกฎและเครื่องมือที่จะช่วยระบุและลดความเสี่ยงด้านการปฏิบัติตามข้อกำหนดและใบอนุญาตที่เกี่ยวข้องกับองค์ประกอบซอฟต์แวร์ที่กำหนด ฟีเจอร์เป้าหมายประกอบด้วย
- ความสามารถในการตรวจสอบแพ็กเกจที่ใช้โดยเป้าหมายที่ระบุ
- ความสามารถในการสร้างการตรวจสอบการปฏิบัติตามข้อกำหนดของใบอนุญาตเฉพาะองค์กร
ดูการใช้งานrules_Licenseที่กำลังดำเนินการบน GitHub
Bzlmod: ระบบการจัดการทรัพยากร Dependency ภายนอก
เมื่อเปิดตัว Bzlmod จะปรับปรุงความสามารถในการปรับขนาดและความน่าเชื่อถือของทรัพยากร Dependency แบบทรานซิทีฟ ในอีก 3 ปีข้างหน้า Bzlmod มุ่งหมายที่จะแทนที่ WORKSPACE
ให้เป็นระบบย่อยการจัดการทรัพยากร Dependency เริ่มต้นของ Bazel ฟีเจอร์เป้าหมายมีดังนี้
- การสนับสนุนงานสร้างที่แยกต่างหาก
- การปักหมุดกฎการอ้างอิงที่มีเวอร์ชันของผู้ให้บริการ/โหมดออฟไลน์ไปยังสำเนาในเครื่อง
- Bazel Central Registry รวมการสนับสนุนของชุมชนเป็นประจำ และการใช้กฎ Bazel ที่สำคัญและ โปรเจ็กต์
- Bzlmod กลายเป็นเครื่องมือเริ่มต้นสำหรับการสร้างโปรเจ็กต์ Bazel
บิลด์ที่ลงชื่อ
Bazel จะมีไบนารีที่เชื่อถือได้สำหรับ Windows และ Mac ที่รับรองด้วยคีย์ของ Google ฟีเจอร์นี้ช่วยให้นักพัฒนาซอฟต์แวร์/นักพัฒนาซอฟต์แวร์หลายแพลตฟอร์มสามารถระบุแหล่งที่มาของไบนารีของ Bazel และปกป้องระบบจากไบนารีที่เป็นอันตรายและไม่ได้รับการยืนยัน
API ของแพลตฟอร์มที่ได้มาตรฐาน
API แพลตฟอร์มใหม่จะทำให้การกำหนดค่าสถาปัตยกรรมเป็นมาตรฐานสำหรับบิลด์หลายภาษาและหลายแพลตฟอร์ม ฟีเจอร์นี้ช่วยให้นักพัฒนาแอปสามารถลดข้อผิดพลาดและความซับซ้อนของเวลาพัฒนาที่มีต้นทุนสูงในบิลด์ขนาดใหญ่
สร้างเมตริกการวิเคราะห์
การวัดและส่งข้อมูลทางไกลของ Bazel จะมอบเมตริกเวลาสำหรับการวิเคราะห์ ซึ่งช่วยให้นักพัฒนาแอปเพิ่มประสิทธิภาพบิลด์ของตนเองได้
การดำเนินการระยะไกลด้วย "บิลด์โดยไม่ใช้ไบต์"
บิลด์ที่ไม่มีไบต์จะเพิ่มประสิทธิภาพโดยอนุญาตให้ Bazel ดาวน์โหลดอาร์ติแฟกต์ที่จำเป็นเท่านั้น เพื่อป้องกันไม่ให้บิลด์เกิดการคอขวดบนแบนด์วิดท์เครือข่าย ฟีเจอร์ที่เพิ่มสำหรับบิลด์ระยะไกลมีดังนี้
- ใช้การดาวน์โหลดแบบไม่พร้อมกันเพื่อให้การทำงานในเครื่องและระยะไกลเริ่มต้นได้ในทันทีที่ดาวน์โหลดเอาต์พุตที่เกี่ยวข้อง
- เพิ่มการรองรับ Symlinks
- เรียกข้อมูลเอาต์พุตระดับกลางจากการดำเนินการระยะไกลเมื่อบิลด์เสร็จสมบูรณ์
*ลิขสิทธิ์ © 2022 JetBrains s.r.o. JetBrains และ IntelliJ เป็นเครื่องหมายการค้าจดทะเบียนของ JetBrains s.r.o