แผนกลยุทธ์ของ Bazel

ภาพรวม

สวัสดีปีใหม่จากชุมชน 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

การสร้างข้อมูล 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