แผนกลยุทธ์ของ 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 และการรวมทรัพยากรเป็น v30.1.3 เพื่อให้นักพัฒนาแอป Android ใช้ฟีเจอร์การผสานไฟล์ Manifest เวอร์ชันใหม่ๆ ได้ เช่น Tools:node="merge"

การปรับปรุงการดำเนินการจากระยะไกล

Bazel 7.0 รองรับการดำเนินการแบบไม่พร้อมกัน เพิ่มความเร็วในการดำเนินการจากระยะไกลผ่านการทำงานพร้อมกันที่เพิ่มขึ้นด้วยแฟล็ก --jobs

Bzlmod: ระบบการจัดการการอ้างอิงภายนอก

Bzlmod จะแก้ไขทรัพยากร Dependency ชั่วคราวโดยอัตโนมัติ ทําให้โปรเจ็กต์ปรับขนาดได้ในขณะที่คงความรวดเร็วและมีประสิทธิภาพทรัพยากร Bazel 7.0 มีการเพิ่มประสิทธิภาพมากมายในฟังก์ชันการจัดการทรัพยากร Dependency ภายนอกของ Bazel ซึ่งได้แก่

  • Bzlmod เปิดอยู่โดยค่าเริ่มต้นสําหรับการจัดการทรัพยากร Dependency ภายนอกใน Bazel
  • รองรับการล็อกไฟล์ - เปิดใช้บิลด์ Hermetic ด้วย Bzlmod
  • การรองรับโหมดผู้ให้บริการ/ออฟไลน์ — ช่วยให้ผู้ใช้เรียกใช้บิลด์ที่มีทรัพยากร Dependency ที่ดาวน์โหลดไว้ล่วงหน้าได้
  • รองรับแคชที่เก็บแบบสมบูรณ์ (การแคชไม่เพียงดาวน์โหลดอาร์ติแฟกต์ แต่รวมถึงเนื้อหาของที่เก็บขั้นสุดท้ายด้วย)
  • Bazel Central Registry ประกอบด้วยการสนับสนุนของชุมชนเป็นประจำ รวมถึงการนำกฎและโปรเจ็กต์ที่สำคัญของ Bazel ไปใช้

สร้างเมตริกการวิเคราะห์

Bazel 7.0 ให้เมตริกเวลาระยะการวิเคราะห์ ซึ่งช่วยให้นักพัฒนาซอฟต์แวร์เพิ่มประสิทธิภาพบิลด์ของตนเองได้

สร้างโดยไม่เปิดใช้ไบต์โดยค่าเริ่มต้น

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

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

  • แก้ไขช่องว่างของฟีเจอร์ในการรองรับ Symlink

  • แสดงตัวเลือกในการเรียกเอาต์พุตระดับกลางจากการดำเนินการระยะไกล

สร้างประสิทธิภาพการทำงานด้วย 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 ใช้งานได้อย่างรวดเร็วผ่านการติดตั้งบนอุปกรณ์เคลื่อนที่เวอร์ชันที่อัปเดตแล้ว

การสร้างข้อมูล Bill of Materials ของซอฟต์แวร์ (SBOM) และเครื่องมือการปฏิบัติตามข้อกำหนดใบอนุญาต OSS

Bazel ช่วยให้นักพัฒนาซอฟต์แวร์สร้างข้อมูลเพื่อนำไปช่วยผลิต SBOM ได้ ข้อมูลนี้จะแสดงผลในรูปแบบข้อความหรือ JSON และสามารถจัดรูปแบบได้ง่ายเพื่อให้เป็นไปตามข้อกำหนดของ SPDX หรือ CycloneDX นอกจากนี้ ขั้นตอนนี้ยังระบุกฎไว้เพื่อประกาศใบอนุญาตของโมดูล Bazel รวมถึงเครื่องมือในการสร้างกระบวนการเกี่ยวกับการประกาศเหล่านั้น ดูการติดตั้งใช้งานกฎการกำหนดราคาที่อยู่ระหว่างดำเนินการใน GitHub

บิลด์ที่ลงนามแล้ว

Bazel ให้บริการไบนารีที่เชื่อถือได้สำหรับ Windows และ Mac ที่รับรองด้วยคีย์ Google ฟีเจอร์นี้ช่วยให้นักพัฒนาซอฟต์แวร์/นักพัฒนาซอฟต์แวร์หลายแพลตฟอร์มสามารถระบุแหล่งที่มาของไบนารีของ Bazel และปกป้องระบบของตนจากไบนารีที่อาจเป็นอันตรายและไม่ได้รับการยืนยัน

การย้ายข้อมูลกฎ Java, C++ และ Python ไปยัง Starlark

ย้ายข้อมูลชุดกฎ Java, C++ และ Python ไปยัง Starlark โดยสมบูรณ์ ความพยายามนี้ทำให้ผู้ใช้ Bazel แยกเฉพาะชุดกฎ ไม่ใช่โค้ดฐานไบนารีของ Bazel ซึ่งทำให้ผู้ใช้สามารถ

  • อัปเดตและปรับแต่งกฎตามต้องการ
  • อัปเดตกฎแยกจาก Bazel

การสนับสนุน IntelliJ IDEA ของ Bazel-JetBrains*

อัปเดตปลั๊กอิน IntelliJ ที่เพิ่มขึ้นเพื่อรองรับปลั๊กอิน JetBrains ล่าสุด

โรดแมปนี้มุ่งเป้าไปยังภาพรวมของเป้าหมาย และไม่ควรถือเป็นการรับประกัน ลำดับความสำคัญอาจมีการเปลี่ยนแปลงตามความคิดเห็นของนักพัฒนาซอฟต์แวร์และลูกค้า หรือโอกาสทางการตลาดใหม่ๆ

หากต้องการรับการแจ้งเตือนเกี่ยวกับฟีเจอร์ใหม่ๆ รวมถึงการอัปเดตแผนกลยุทธ์นี้ ให้เข้าร่วมชุมชน Google Group

*ลิขสิทธิ์ © 2022 JetBrains s.r.o. JetBrains และ IntelliJ เป็นเครื่องหมายการค้าจดทะเบียนของ JetBrains s.r.o