ภาพรวม
สวัสดีปีใหม่ ชุมชน Bazel ในช่วงปีใหม่นี้ เราวางแผนที่จะแจ้งรายละเอียดแผนงานปี 2023 เมื่อปีที่แล้ว เราได้เผยแพร่แผนกลยุทธ์ปี 2022 พร้อมแผนสำหรับ Bazel 6.0 เราหวังว่าแผนกลยุทธ์นี้จะเป็นประโยชน์ต่อความต้องการด้านเครื่องมือสร้างของคุณ เนื่องจากโปรเจ็กต์ Bazel พัฒนาอย่างต่อเนื่องเพื่อตอบสนองความต้องการของคุณ เราจึงอยากแชร์ข้อมูลอัปเดตสำหรับปี 2023
การเปลี่ยนแปลงเหล่านี้มีจุดประสงค์เพื่อให้ชุมชนโอเพนซอร์สได้รับข้อมูลและมีส่วนร่วมอยู่เสมอ แผนกลยุทธ์นี้อธิบายถึงโครงการริเริ่มในปัจจุบันและการคาดการณ์สำหรับอนาคตของการพัฒนา Bazel ซึ่งจะช่วยให้คุณเห็นลำดับความสำคัญในปัจจุบันและโปรเจ็กต์ที่กำลังดำเนินอยู่
รุ่น Bazel 7.0
เราวางแผนที่จะมอบการสนับสนุนระยะยาว (LTS) สำหรับ Bazel 7.0 ให้คุณในช่วงปลายปี 2023 ใน Bazel 7.0 เรามุ่งมั่นที่จะส่งมอบรายการต่างๆ ที่อยู่ระหว่างดำเนินการและปรับปรุงฟีเจอร์ที่ผู้ใช้ของเราต้องการอย่างต่อเนื่อง
การแชร์คachéข้ามแพลตฟอร์มที่ดียิ่งขึ้น
ช่วยให้แชร์อาร์ติแฟกต์ที่แคชไว้ในแพลตฟอร์มต่างๆ ของบิลด์ในเครื่อง (Mac) และบิลด์ระยะไกล (Linux) ได้ ซึ่งส่วนใหญ่สําหรับการพัฒนา Java/Kotlin และ Android ส่งผลให้มีประสิทธิภาพดีขึ้นและใช้แคชได้อย่างมีประสิทธิภาพ
บิลด์แอป Android ด้วย Bazel
เครื่องมือผสานไฟล์ Manifest และทรัพยากรอัปเดตเป็นเวอร์ชัน 30.1.3 เพื่อให้นักพัฒนาแอป Android ใช้ฟีเจอร์การผสานไฟล์ Manifest เวอร์ชันใหม่ได้ เช่น tools:node="merge"
การปรับปรุงการดำเนินการจากระยะไกล
Bazel 7.0 รองรับการดำเนินการแบบอะซิงโครนัส ซึ่งจะเร่งการดำเนินการระยะไกลผ่านการขนานกันมากขึ้นด้วย Flag --jobs
Bzlmod: ระบบการจัดการทรัพยากร Dependency ภายนอก
Bzlmod จะแก้ไขการพึ่งพาแบบเปลี่ยนผ่านโดยอัตโนมัติ ซึ่งช่วยให้โปรเจ็กต์ปรับขนาดได้อย่างรวดเร็วและประหยัดทรัพยากร Bazel 7.0 มีการปรับปรุงฟังก์ชันการจัดการทรัพยากรภายนอกของ Bazel หลายอย่าง ซึ่งรวมถึง
- Bzlmod เปิดอยู่โดยค่าเริ่มต้นสําหรับการจัดการ Dependency ภายนอกใน Bazel
- การรองรับไฟล์ล็อก - เปิดใช้บิลด์แบบปิดผนึกด้วย Bzlmod
- การรองรับโหมดผู้ให้บริการ/ออฟไลน์ - อนุญาตให้ผู้ใช้เรียกใช้บิลด์ที่มีทรัพยากร Dependency ที่ดาวน์โหลดไว้ล่วงหน้า
- การรองรับแคชที่เก็บอย่างสมบูรณ์ (แคชไม่เพียงแต่จะดาวน์โหลดอาร์ติแฟกต์เท่านั้น แต่ยังแคชเนื้อหาที่เก็บสุดท้ายด้วย)
- รีจิสทรีส่วนกลางของ Bazel ประกอบด้วยการมีส่วนร่วมของชุมชนเป็นประจำและการนำกฎและโปรเจ็กต์หลักของ Bazel มาใช้
สร้างเมตริกการวิเคราะห์
Bazel 7.0 มีเมตริกเวลาของระยะการวิเคราะห์ ซึ่งช่วยให้นักพัฒนาซอฟต์แวร์เพิ่มประสิทธิภาพการสร้างของตนเองได้
บิลด์โดยไม่เปิด Bytes โดยค่าเริ่มต้น
บิลด์ที่ไม่มีไบต์จะเพิ่มประสิทธิภาพโดยการหลีกเลี่ยงการดาวน์โหลดอาร์ติแฟกต์ระดับกลางและป้องกันไม่ให้บิลด์เกิดปัญหาคอขวดกับแบนด์วิดท์ของเครือข่าย ฟีเจอร์ที่เพิ่มเข้ามามีดังนี้
รองรับการลบแคชระยะไกลด้วยบริการเช่า เพื่อให้ผู้ใช้ไม่พบข้อผิดพลาดเมื่อระบบนำรายการต่างๆ ออกก่อนเวลาอันควร
จัดการช่องโหว่ของฟีเจอร์ในการรองรับสัญลักษณ์ลิงก์
ระบุตัวเลือกในการดึงข้อมูลเอาต์พุตกลางจากการดําเนินการระยะไกล
เพิ่มประสิทธิภาพการทำงานด้วย 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 ใช้งานได้อย่างรวดเร็วผ่าน Mobile Install เวอร์ชันอัปเดต
เครื่องมือสร้างข้อมูลใบแจ้งหนี้วัสดุของซอฟต์แวร์ (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
การรองรับ Bazel-JetBrains* IntelliJ IDEA
การอัปเดตปลั๊กอิน IntelliJ แบบค่อยเป็นค่อยไปเพื่อรองรับรุ่นล่าสุดของปลั๊กอิน JetBrains
แผนภาพนี้แสดงภาพเป้าหมายโดยสังเขป และไม่ควรถือเป็นการรับประกัน ลำดับความสำคัญอาจเปลี่ยนแปลงตามความคิดเห็นของนักพัฒนาแอปและลูกค้า หรือโอกาสใหม่ๆ ในตลาด
หากต้องการรับการแจ้งเตือนเกี่ยวกับฟีเจอร์ใหม่ๆ รวมถึงข้อมูลอัปเดตเกี่ยวกับแผนงานนี้ โปรดเข้าร่วมชุมชน Google Group
*ลิขสิทธิ์ © 2022 JetBrains s.r.o. JetBrains และ IntelliJ เป็นเครื่องหมายการค้าจดทะเบียนของ JetBrains s.r.o