ภาพรวม
สวัสดีปีใหม่ในชุมชน Bazel เราวางแผนที่จะกล่าวถึงรายละเอียดแผนกลยุทธ์ปี 2023 ในช่วงปีใหม่นี้ เมื่อปีที่แล้ว เราได้เผยแพร่แผนกลยุทธ์ปี 2022 ที่มาพร้อมแพ็กเกจ Bazel 6.0 เราหวังว่าแผนกลยุทธ์ดังกล่าวจะให้ข้อมูลแก่คุณเกี่ยวกับความต้องการด้านเครื่องมือบิลด์ เราต้องการแชร์ข้อมูลอัปเดตในปี 2023 เนื่องจากโปรเจ็กต์ Bazel พัฒนาอย่างต่อเนื่องเพื่อตอบสนองความต้องการของคุณ
จากการเปลี่ยนแปลงเหล่านี้ เราจึงต้องการให้ชุมชนโอเพนซอร์สมีข้อมูลที่ครบถ้วนและเป็นประโยชน์ แผนงานนี้จะอธิบายถึงโครงการริเริ่มและการคาดการณ์ในปัจจุบันสำหรับอนาคตของการพัฒนา Bazel เพื่อให้คุณทราบถึงลำดับความสำคัญในปัจจุบันและโครงการที่ดำเนินอยู่
รุ่น Bazel 7.0
เราวางแผนที่จะให้บริการการสนับสนุนระยะยาว (LTS) ของ Bazel 7.0 ในช่วงปลายปี 2023 ด้วย Bazel 7.0 เรามีเป้าหมายที่จะส่งมอบรายการต่างๆ ที่กำลังดำเนินการอยู่ และดำเนินการปรับปรุงคุณลักษณะที่ผู้ใช้ของเราร้องขอมาอย่างต่อเนื่อง
การแชร์แคชข้ามแพลตฟอร์มที่ดียิ่งขึ้น
เปิดใช้อาร์ติแฟกต์ที่แคชไว้เพื่อแชร์ในแพลตฟอร์มบิลด์ต่างๆ ในเครื่อง (Mac) และระยะไกล (Linux) สำหรับการพัฒนา Java/Kotlin และ Android เป็นหลัก ส่งผลให้มีประสิทธิภาพมากขึ้นและการใช้แคชที่มีประสิทธิภาพ
แอป Android ที่สร้างโดยใช้ Bazel
ไฟล์ Manifest และ การอัปเดต Resource Merger เป็น v30.1.3 เพื่อให้นักพัฒนาแอป Android ใช้ฟีเจอร์ในการรวมไฟล์ Manifest ที่ใหม่กว่าได้ เช่น Tools:node="merge"
ปรับปรุงการดำเนินการจากระยะไกล
Bazel 7.0 รองรับการดำเนินการแบบไม่พร้อมกัน ทำให้การดำเนินการระยะไกลเร็วขึ้นผ่านการทำงานพร้อมกันที่เพิ่มขึ้นด้วย Flag --jobs
Bzlmod: ระบบการจัดการทรัพยากร Dependency ภายนอก
Bzlmod จะแก้ไขทรัพยากร Dependency แบบทรานซิทีฟโดยอัตโนมัติ ซึ่งช่วยให้โปรเจ็กต์ปรับขนาดได้โดยคงความรวดเร็วและประหยัดทรัพยากร Bazel 7.0 มีการเพิ่มประสิทธิภาพหลายประการสำหรับฟังก์ชันการจัดการทรัพยากร Dependency ภายนอกของ Bazel ดังนี้
- Bzlmod เปิดอยู่โดยค่าเริ่มต้นสำหรับการจัดการทรัพยากร Dependency ภายนอกใน Bazel
- ล็อกการสนับสนุนไฟล์ — เปิดใช้บิลด์ที่สัญจรด้วย Bzlmod
- การรองรับผู้ให้บริการ/โหมดออฟไลน์ - อนุญาตให้ผู้ใช้เรียกใช้บิลด์ที่มีทรัพยากร Dependency ที่ดาวน์โหลดไว้ล่วงหน้า
- รองรับแคชที่เก็บอย่างสมบูรณ์ (การแคชไม่เพียงดาวน์โหลดอาร์ติแฟกต์ แต่ยังรวมถึงเนื้อหาที่เก็บขั้นสุดท้ายด้วย)
- การจดทะเบียนของ Bazel Central รวมถึงการสนับสนุนของชุมชนเป็นประจำ และการใช้กฎ Bazel ที่สำคัญและ โปรเจ็กต์
สร้างเมตริกการวิเคราะห์
Bazel 7.0 มีเมตริกเวลาสำหรับการวิเคราะห์ ซึ่งช่วยให้นักพัฒนาแอปเพิ่มประสิทธิภาพบิลด์ของตนเอง
บิลด์โดยไม่เปิดใช้ไบต์โดยค่าเริ่มต้น
บิลด์ที่ไม่มีไบต์ช่วยเพิ่มประสิทธิภาพโดยการหลีกเลี่ยงการดาวน์โหลดอาร์ติแฟกต์ขั้นกลางและป้องกันไม่ให้บิลด์คอขวดบนแบนด์วิดท์เครือข่าย ฟีเจอร์ที่เพิ่มมีดังนี้
รองรับการปลดแคชจากระยะไกลด้วยบริการเช่าเพื่อให้ผู้ใช้ไม่พบข้อผิดพลาดเมื่อมีการนำอาร์ติแฟกต์ออกก่อนกำหนด
อุดช่องโหว่ของฟีเจอร์ในการรองรับ Symlink
ระบุตัวเลือกในการดึงเอาต์พุตระดับกลางจากการดำเนินการระยะไกล
เพิ่มประสิทธิภาพการทำงานด้วย Skymeld
Bazel 7.0 เปิดตัว Skymeld ซึ่งเป็นโหมดการประเมินที่จะช่วยลดเวลาจริงของบิลด์แบบหลายเป้าหมาย Skymeld ช่วยขจัดอุปสรรคระหว่างขั้นตอนการวิเคราะห์และการดำเนินการเพื่อปรับปรุงความเร็วของบิลด์ โดยเฉพาะอย่างยิ่งสำหรับบิลด์ที่มีเป้าหมายระดับบนสุดหลายรายการ อย่างไรก็ตาม สำหรับบิลด์แบบกำหนดเป้าหมายเดียว จะไม่มีความแตกต่างที่มีนัยสำคัญ
ระบบนิเวศ Bazel และ เครื่องมือ
แอป Android ที่สร้างโดยใช้ Bazel
- ย้ายข้อมูลกฎของระบบ Android ไปยัง Starlark: สำหรับ Bazel 7.0 กฎของ Android จะย้ายไปยัง Starlark เพื่อแยกการพัฒนาจาก Bazel เองและเพื่อเปิดใช้การสนับสนุนของชุมชนได้ดียิ่งขึ้น นอกจากนี้ เราได้สร้างกฎเหล่านี้ให้เป็นอิสระจากไบนารีหลักของ Bazel ทำให้เราสามารถเผยแพร่กฎได้บ่อยขึ้น
- การย้ายข้อมูลกฎ Android ไปยัง Starlark
- การรองรับ R8: อนุญาตให้นักพัฒนาแอป Android ใช้การเพิ่มประสิทธิภาพที่อัปเดตแล้วของ R8
- การติดตั้งบนอุปกรณ์เคลื่อนที่: ช่วยให้นักพัฒนาแอป Android สามารถพัฒนา ทดสอบ และทำให้แอป Android มีการเปลี่ยนแปลงได้อย่างรวดเร็วผ่านการติดตั้งบนอุปกรณ์เคลื่อนที่เวอร์ชันที่อัปเดตแล้ว
การสร้างข้อมูลซอฟต์แวร์ Bill of Materials (SBOM) และ เครื่องมือในการปฏิบัติตามข้อกำหนดของใบอนุญาต OSS
Bazel ช่วยให้นักพัฒนาซอฟต์แวร์สร้างข้อมูลเพื่อช่วยสร้าง SBOM ได้ ข้อมูลนี้จะส่งออกในรูปแบบข้อความหรือ JSON และสามารถจัดรูปแบบให้เป็นไปตามข้อกำหนดของ SPDX หรือ CycloneDX ได้โดยง่าย นอกจากนี้ กระบวนการดังกล่าวยังระบุกฎเพื่อประกาศใบอนุญาตใช้งานโมดูล Bazel และเครื่องมือในการสร้างกระบวนการที่เกี่ยวข้องกับการประกาศเหล่านั้นอีกด้วย ดูการใช้งานrules_Licenseที่กำลังดำเนินการบน GitHub
บิลด์ที่ลงชื่อ
Bazel มีไบนารีที่เชื่อถือได้สำหรับ Windows และ Mac ที่รับรองด้วยคีย์ของ Google ฟีเจอร์นี้ช่วยให้นักพัฒนาซอฟต์แวร์/นักพัฒนาซอฟต์แวร์หลายแพลตฟอร์มสามารถระบุแหล่งที่มาของไบนารีของ Bazel และปกป้องระบบจากไบนารีที่ยังไม่ได้รับการยืนยันซึ่งอาจเป็นอันตรายได้
การย้ายข้อมูลกฎ Java, C++ และ Python ไปยัง Starlark
ย้ายข้อมูลชุดกฎ Java, C++ และ Python ไปยัง Starlark ให้เสร็จสมบูรณ์ ความพยายามนี้ทำให้ผู้ใช้ Bazel แยกเฉพาะชุดกฎได้เท่านั้น ไม่ใช่ชุดโค้ดฐานไบนารีของ Bazel ซึ่งทำให้ผู้ใช้สามารถ
- อัปเดตและปรับแต่งกฎตามต้องการ
- อัปเดตกฎแยกจาก Bazel
การสนับสนุน IntelliJ IDEA ของ Bazel-JetBrains*
การอัปเดตปลั๊กอิน IntelliJ ที่เพิ่มขึ้นเพื่อรองรับปลั๊กอิน JetBrains รุ่นล่าสุด
สแนปชอตแผนกลยุทธ์นี้จะกำหนดเป้าหมาย และไม่ควรนำมาใช้เป็นการรับประกันแต่อย่างใด ลำดับความสำคัญอาจเปลี่ยนแปลงได้ตามความคิดเห็นของนักพัฒนาแอปและลูกค้า หรือตามโอกาสทางการตลาดใหม่ๆ
โปรดเข้าร่วมชุมชน Google Group เพื่อรับการแจ้งเตือนเกี่ยวกับฟีเจอร์ใหม่ๆ รวมถึงการอัปเดตแผนกลยุทธ์นี้
*ลิขสิทธิ์ © 2022 JetBrains s.r.o. JetBrains และ IntelliJ เป็นเครื่องหมายการค้าจดทะเบียนของ JetBrains s.r.o