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

รายงานปัญหา ดูซอร์สโค้ด รุ่น Nightly · 8.0 7.4 7.3 · 7.2 · 7.1 · 7.0 · 6.5

ภาพรวม

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

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

รุ่น Bazel 7.0

เราวางแผนที่จะมอบการสนับสนุนระยะยาว (LTS) สำหรับ Bazel 7.0 ให้คุณในช่วงปลายปี 2023 ใน Bazel 7.0 เรามุ่งมั่นที่จะส่งมอบรายการต่างๆ ที่อยู่ระหว่างดำเนินการและปรับปรุงฟีเจอร์ที่ผู้ใช้ของเราต้องการอย่างต่อเนื่อง

การแชร์คachéข้ามแพลตฟอร์มที่ดียิ่งขึ้น

ช่วยให้แชร์อาร์ติแฟกต์ที่แคชไว้ในแพลตฟอร์มต่างๆ ของบิลด์ในเครื่อง (Mac) และบิลด์ระยะไกล (Linux) ได้ ซึ่งส่วนใหญ่สําหรับการพัฒนา Java/Kotlin และ Android ส่งผลให้มีประสิทธิภาพดีขึ้นและใช้แคชได้อย่างมีประสิทธิภาพ

บิลด์แอป Android ด้วย Bazel

เครื่องมือผสานไฟล์ Manifest และทรัพยากรอัปเดตเป็นเวอร์ชัน 30.1.3 เพื่อให้นักพัฒนาแอป Android ใช้ฟีเจอร์การผสานไฟล์ Manifest เวอร์ชันใหม่ได้ เช่น tools:node="merge"

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

Bazel 7.0 รองรับการดำเนินการแบบอะซิงโครนัส ซึ่งจะเร่งการดำเนินการระยะไกลผ่านการขนานกันมากขึ้นด้วย Flag --jobs

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

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

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

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

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

บิลด์โดยไม่เปิด Bytes โดยค่าเริ่มต้น

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

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

  • จัดการช่องโหว่ของฟีเจอร์ในการรองรับสัญลักษณ์ลิงก์

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

เพิ่มประสิทธิภาพการทำงานด้วย 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 ใช้งานได้อย่างรวดเร็วผ่าน Mobile Install เวอร์ชันอัปเดต

เครื่องมือสร้างข้อมูลใบแจ้งหนี้วัสดุของซอฟต์แวร์ (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

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

การอัปเดตปลั๊กอิน IntelliJ แบบค่อยเป็นค่อยไปเพื่อรองรับรุ่นล่าสุดของปลั๊กอิน JetBrains

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

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

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