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

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

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

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

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

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

บิลด์ที่ไม่ได้เปิดใช้ไบต์ตามค่าเริ่มต้น

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

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

  • แก้ไขช่องว่างของฟีเจอร์ในการรองรับ 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 ไปใช้ได้อย่างรวดเร็วผ่านการติดตั้งบนอุปกรณ์เคลื่อนที่เวอร์ชันอัปเดต

เครื่องมือการสร้างข้อมูลซอฟต์แวร์ (BillOM) และเครื่องมือสําหรับการปฏิบัติตามข้อกําหนดของใบอนุญาต 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

Bazel-JetBrains* รองรับ IntelliJ IDEA

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

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

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

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