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

รายงานปัญหา ดูแหล่งที่มา Nightly · 8.4 · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

ภาพรวม

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

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

การเปิดตัว Bazel 7.0

เรามีแผนที่จะนำ Long Term Support (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: ระบบการจัดการทรัพยากร Dependency ภายนอก

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

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

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

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

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

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

การสร้างข้อมูลรายการวัสดุของซอฟต์แวร์ (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 สามารถ Fork เฉพาะชุดกฎได้โดยไม่ต้อง Fork ฐานโค้ดไบนารีของ Bazel ซึ่งช่วยให้ผู้ใช้ทำสิ่งต่อไปนี้ได้

  • อัปเดตและปรับแต่งกฎตามต้องการ
  • อัปเดตกฎโดยไม่ขึ้นอยู่กับ Bazel

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

การอัปเดตปลั๊กอิน IntelliJ แบบทีละขั้นเพื่อรองรับปลั๊กอิน JetBrains เวอร์ชันล่าสุด

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

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

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