ภาพรวม
สวัสดีปีใหม่จากชุมชน Bazel เรามีแผนที่จะนำรายละเอียดแผนกลยุทธ์ปี 2023 มาให้คุณได้ทราบกันในปีใหม่นี้ เมื่อปีที่แล้ว เราได้เผยแพร่แผนกลยุทธ์ปี 2022 พร้อมแผนการสำหรับ Bazel 6.0 เราหวังว่าแผนกลยุทธ์ดังกล่าวจะเป็นประโยชน์ต่อความต้องการเครื่องมือบิลด์ของคุณ เนื่องจากโปรเจ็กต์ Bazel มีการพัฒนาอย่างต่อเนื่องเพื่อตอบสนองความต้องการของคุณ เราจึงอยากจะแชร์ข้อมูลอัปเดตปี 2023
การเปลี่ยนแปลงเหล่านี้มีขึ้นเพื่อให้ชุมชนโอเพนซอร์สของเราได้รับข้อมูลและมีส่วนร่วม แผนกลยุทธ์นี้อธิบายถึงความคิดริเริ่มในปัจจุบันและการคาดการณ์เกี่ยวกับการพัฒนา Bazel ในอนาคต ซึ่งจะช่วยให้คุณเห็นลำดับความสำคัญในปัจจุบันและโปรเจ็กต์ที่กำลังดำเนินการอยู่
การเปิดตัว Bazel 7.0
เรามีแผนที่จะเปิดตัว Bazel 7.0 ที่มาพร้อมกับการสนับสนุนระยะยาว (LTS) ในช่วงปลายปี 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 รองรับการดำเนินการแบบอะซิงโครนัส ซึ่งจะช่วยเร่งการดำเนินการจากระยะไกลด้วยการเพิ่มการทำงานแบบขนานด้วยแฟล็ก --jobs
Bzlmod: ระบบการจัดการทรัพยากร Dependency ภายนอก
Bzlmod จะแก้ปัญหาทรัพยากร Dependency แบบทรานซิทีฟโดยอัตโนมัติ ซึ่งช่วยให้โปรเจ็กต์ขยายขนาดได้โดยที่ยังคงรวดเร็วและใช้ทรัพยากรอย่างมีประสิทธิภาพ Bazel 7.0 มีการปรับปรุงฟังก์ชันการจัดการทรัพยากร Dependency ภายนอกของ Bazel หลายอย่าง ซึ่งรวมถึง
- เปิด Bzlmod ไว้โดยค่าเริ่มต้นสำหรับการจัดการทรัพยากร Dependency ภายนอกใน Bazel
- การรองรับไฟล์ล็อก ซึ่งช่วยให้บิลด์เป็นแบบเฮอร์เมติกด้วย Bzlmod
- การรองรับโหมดผู้จำหน่าย/โหมดออฟไลน์ ซึ่งช่วยให้ผู้ใช้เรียกใช้บิลด์ด้วยทรัพยากร Dependency ที่ดาวน์โหลดไว้ล่วงหน้าได้
- การรองรับแคชที่เก็บข้อมูลทั้งหมด (แคชไม่เพียงแต่อาร์ติแฟกต์ที่ดาวน์โหลด แต่ยังรวมถึงเนื้อหาที่เก็บข้อมูลสุดท้ายด้วย)
- Bazel Central Registry มีการมีส่วนร่วมของชุมชนและการนำกฎและโปรเจ็กต์หลักๆ ของ Bazel ไปใช้เป็นประจำ
เมตริกการวิเคราะห์บิลด์
Bazel 7.0 มีเมตริกเวลาในระยะการวิเคราะห์ ซึ่งช่วยให้นักพัฒนาซอฟต์แวร์เพิ่มประสิทธิภาพบิลด์ของตนเองได้
บิลด์ที่ไม่มีไบต์เปิดอยู่โดยค่าเริ่มต้น
บิลด์ที่ไม่มีไบต์จะเพิ่มประสิทธิภาพด้วยการหลีกเลี่ยงการดาวน์โหลดอาร์ติแฟกต์ระดับกลาง และป้องกันไม่ให้บิลด์เกิดคอขวดที่แบนด์วิดท์เครือข่าย ฟีเจอร์ที่เพิ่มเข้ามา ได้แก่
การรองรับการนำแคชระยะไกลออกด้วยบริการเช่า เพื่อไม่ให้ผู้ใช้พบข้อผิดพลาดเมื่อมีการนำอาร์ติแฟกต์ออกก่อนเวลาอันควร
เติมเต็มช่องว่างของฟีเจอร์ในการรองรับลิงก์สัญลักษณ์
มีตัวเลือกในการดึงข้อมูลเอาต์พุตระดับกลางจากการดำเนินการจากระยะไกล
ประสิทธิภาพการทำงานของบิลด์ด้วย Skymeld
Bazel 7.0 ขอแนะนำ Skymeld ซึ่งเป็นโหมดการประเมินที่ช่วยลดเวลาจริงของบิลด์แบบหลายเป้าหมาย Skymeld จะขจัดอุปสรรคระหว่างระยะการวิเคราะห์และระยะการดำเนินการเพื่อเพิ่มความเร็วในการบิลด์ โดยเฉพาะอย่างยิ่งสำหรับบิลด์ที่มีเป้าหมายระดับบนสุดหลายรายการ อย่างไรก็ตาม สำหรับบิลด์แบบเป้าหมายเดียว เราไม่คาดว่าจะมีความแตกต่างอย่างมีนัยสำคัญ
ระบบนิเวศและเครื่องมือของ Bazel
การบิลด์แอป Android ด้วย Bazel
- ย้ายกฎเนทีฟของ Android ไปยัง Starlark: สำหรับ Bazel 7.0 กฎของ Android จะย้ายไปยัง Starlark เพื่อแยกการพัฒนาออกจาก Bazel เอง และเพื่อเปิดโอกาสให้ชุมชนมีส่วนร่วมได้มากขึ้น นอกจากนี้ เรายังทำให้กฎเหล่านี้เป็นอิสระจากไบนารีหลักของ Bazel ซึ่งช่วยให้เราเผยแพร่ได้บ่อยขึ้น
- การย้ายกฎของ Android ไปยัง Starlark
- การรองรับ R8: ช่วยให้นักพัฒนาแอป Android ใช้การเพิ่มประสิทธิภาพที่อัปเดตของ R8 ได้
- Mobile Install: ช่วยให้นักพัฒนาแอป Android พัฒนา ทดสอบ และติดตั้งใช้งานการเปลี่ยนแปลงแอป Android ได้อย่างรวดเร็วผ่าน Mobile Install เวอร์ชันที่อัปเดต
การสร้างข้อมูล Software Bill of Materials (SBOM) และเครื่องมือการปฏิบัติตามข้อกำหนดด้านใบอนุญาต OSS
Bazel ช่วยให้นักพัฒนาซอฟต์แวร์สร้างข้อมูลเพื่อช่วยสร้าง SBOM ได้ ข้อมูลนี้จะแสดงผลในรูปแบบข้อความหรือ JSON และจัดรูปแบบให้เป็นไปตามข้อกำหนด SPDX หรือ CycloneDX ได้อย่างง่ายดาย นอกจากนี้ กระบวนการนี้ยังมีกฎในการประกาศใบอนุญาตที่โมดูล Bazel มีให้ใช้งาน และเครื่องมือในการสร้างกระบวนการตามการประกาศเหล่านั้น ดูการใช้งาน rules_license ที่กำลังดำเนินการอยู่ บน GitHub
บิลด์ที่ลงชื่อแล้ว
Bazel มีไบนารีที่เชื่อถือได้สำหรับ Windows และ Mac ซึ่งลงชื่อด้วยคีย์ของ Google ฟีเจอร์นี้ช่วยให้นักพัฒนาซอฟต์แวร์/DevOps แบบหลายแพลตฟอร์มระบุแหล่งที่มาของไบนารี Bazel และปกป้องระบบของตนจากไบนารีที่ไม่ได้รับการยืนยันซึ่งอาจเป็นอันตรายได้
การย้ายกฎของ Java, C++ และ Python ไปยัง Starlark
การย้ายชุดกฎของ Java, C++ และ Python ไปยัง Starlark ให้เสร็จสมบูรณ์ การดำเนินการนี้ช่วยให้ผู้ใช้ Bazel สามารถแยกชุดกฎเท่านั้น ไม่ใช่ฐานของโค้ดไบนารี Bazel ซึ่งช่วยให้ผู้ใช้ทำสิ่งต่อไปนี้ได้
- อัปเดตและปรับแต่งกฎตามต้องการ
- อัปเดตกฎแยกจาก Bazel
การรองรับ Bazel-JetBrains* IntelliJ IDEA
การอัปเดตปลั๊กอิน IntelliJ แบบเพิ่มทีละส่วนเพื่อรองรับปลั๊กอิน JetBrains เวอร์ชันล่าสุด
แผนกลยุทธ์นี้แสดงเป้าหมายแบบคร่าวๆ และไม่ควรนำไปใช้รับประกันผลลัพธ์ ลำดับความสำคัญอาจมีการเปลี่ยนแปลงตามความคิดเห็นของนักพัฒนาซอฟต์แวร์และลูกค้า หรือโอกาสทางการตลาดใหม่ๆ
หากต้องการรับการแจ้งเตือนเกี่ยวกับฟีเจอร์ใหม่ๆ ซึ่งรวมถึงการอัปเดตแผนกลยุทธ์นี้ ให้เข้าร่วมชุมชน Google Group
*Copyright © 2022 JetBrains s.r.o. JetBrains และ IntelliJ เป็นเครื่องหมายการค้าจดทะเบียนของ JetBrains s.r.o