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

รายงานปัญหา ดูแหล่งที่มา

ภาพรวม

สวัสดีปีใหม่ในชุมชน Bazel เราวางแผนที่จะกล่าวถึงรายละเอียดแผนกลยุทธ์ปี 2023 ในช่วงปีใหม่นี้ เมื่อปีที่แล้ว เราได้เผยแพร่แผนกลยุทธ์ปี 2022 ที่มาพร้อมแพ็กเกจ Bazel 6.0 เราหวังว่าแผนกลยุทธ์ให้ข้อมูลที่คุณต้องการทราบเกี่ยวกับความต้องการด้านเครื่องมือบิลด์ของคุณ เราต้องการแชร์ข้อมูลอัปเดตในปี 2023 เนื่องจากโปรเจ็กต์ Bazel พัฒนาอย่างต่อเนื่องเพื่อตอบสนองความต้องการของคุณ

สําหรับการเปลี่ยนแปลงเหล่านี้ เราจึงต้องการให้ชุมชนโอเพนซอร์สมีข้อมูลที่ครบถ้วนและเป็นประโยชน์ แผนงานนี้จะอธิบายถึงโครงการริเริ่มและการคาดการณ์ในปัจจุบันสำหรับอนาคตของการพัฒนา 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 รองรับการดำเนินการแบบไม่พร้อมกัน ทำให้การดำเนินการระยะไกลเร็วขึ้นผ่านการทำงานพร้อมกันที่เพิ่มขึ้นด้วย Flag --jobs

Bzlmod: ระบบการจัดการทรัพยากร Dependency ภายนอก

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

  • Bzlmod เปิดอยู่โดยค่าเริ่มต้นสำหรับการจัดการทรัพยากร Dependency ภายนอกใน Bazel
  • ล็อกการสนับสนุนไฟล์ — เปิดใช้บิลด์ที่สัญจรด้วย 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 มีการเปลี่ยนแปลงได้อย่างรวดเร็วผ่านการติดตั้งบนอุปกรณ์เคลื่อนที่เวอร์ชันที่อัปเดตแล้ว

Software Bill of Materials Data Generation (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

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

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

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

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

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