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

ภาพรวม

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

การสร้างข้อมูลรายการวัสดุซอฟต์แวร์ (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