แผนกลยุทธ์ของ 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 มีเมตริกเวลาในระยะการวิเคราะห์ ซึ่งช่วยให้นักพัฒนาซอฟต์แวร์เพิ่มประสิทธิภาพบิลด์ของตนเองได้

สร้างโดยไม่เปิดใช้ Build without the Bytes โดยค่าเริ่มต้น

Builds without the Bytes จะเพิ่มประสิทธิภาพด้วยการหลีกเลี่ยงการดาวน์โหลดอาร์ติแฟกต์ระดับกลางและป้องกันไม่ให้บิลด์เกิดคอขวดที่แบนด์วิดท์เครือข่าย ฟีเจอร์ที่เพิ่มเข้ามา ได้แก่

  • การรองรับการนำแคชระยะไกลออกด้วยบริการเช่า เพื่อไม่ให้ผู้ใช้พบข้อผิดพลาดเมื่อมีการนำอาร์ติแฟกต์ออกก่อนเวลาอันควร

  • เติมเต็มช่องว่างของฟีเจอร์ในการรองรับ Symlink

  • มีตัวเลือกในการดึงข้อมูลเอาต์พุตระดับกลางจากการดำเนินการจากระยะไกล

เพิ่มประสิทธิภาพการทำงานด้วย 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