ภาพรวม
สวัสดีปีใหม่จากชุมชน Bazel เรามีแผนที่จะนำรายละเอียดแผนกลยุทธ์ปี 2023 มาให้คุณได้ทราบกัน เมื่อปีที่แล้ว เราได้เผยแพร่แผนกลยุทธ์ปี 2022 พร้อมแผนการสำหรับ Bazel 6.0 เราหวังว่าแผนกลยุทธ์ดังกล่าวจะเป็นประโยชน์ต่อความต้องการเครื่องมือบิลด์ของคุณ เนื่องจากโปรเจ็กต์ Bazel มีการพัฒนาอย่างต่อเนื่องเพื่อตอบสนองความต้องการของคุณ เราจึงอยากแชร์ข้อมูลอัปเดตปี 2023
การเปลี่ยนแปลงเหล่านี้จะช่วยให้ชุมชนโอเพนซอร์สของเราได้รับข้อมูลและมีส่วนร่วมอยู่เสมอ แผนกลยุทธ์นี้อธิบายถึงความคิดริเริ่มในปัจจุบันและการคาดการณ์เกี่ยวกับการพัฒนา 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 รองรับการดำเนินการแบบอะซิงโครนัส ซึ่งจะช่วยเร่งการดำเนินการระยะไกลผ่านการทำงานแบบขนานที่เพิ่มขึ้นด้วยแฟล็ก --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 เวอร์ชันที่อัปเดต
การสร้างข้อมูลรายการวัสดุซอฟต์แวร์ (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