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

ภาพรวม

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

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

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

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

ไตรมาส 4 — รุ่น Bazel 6.0

ไตรมาสที่ 4 เปิดตัว Bazel 6.0 ซึ่งเป็นการสนับสนุนระยะยาว (LTS) เวอร์ชันใหม่ Bazel 6.0 วางแผนที่จะเพิ่มฟีเจอร์ใหม่ๆ ที่มีประสิทธิภาพตามที่ชุมชนร้องขอ ซึ่งใช้ในการจัดการทรัพยากร Dependency พัฒนาร่วมกับ Android และอื่นๆ อีกมากมาย

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

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

  • Bzlmod เปลี่ยนจาก "ทดลอง" เป็น "พร้อมใช้งานโดยทั่วไป"
  • รวมการสนับสนุนสำหรับ rules\_jvm\_external ซึ่งอนุญาตให้ผู้ใช้ดาวน์โหลดทรัพยากร Dependency ของ Maven สำหรับโปรเจ็กต์ Java ได้
  • คู่มือการย้ายข้อมูล Bzlmod มอบเครื่องมือ สคริปต์ และเอกสารประกอบให้แก่ทีมที่ต้องการนำ Bzlmod
  • ที่เก็บส่วนกลางของ Bazel โฮสต์กฎหลักสำหรับ Bazel BUILD (rules\_jvm\_external, rules\_go, rules\_python, rules\_nodejs) และการอ้างอิงคีย์ที่จำเป็นสำหรับ Bzlmod

ดูข้อมูลเพิ่มเติมเกี่ยวกับการพัฒนานี้ได้ในการอัปเดตชุมชน Bzlmod หรืออ่านเอกสารการออกแบบต้นฉบับ

แอป Android ที่สร้างด้วย Bazel

Bazel 6.0 จะมีเครื่องมือที่ปรับปรุงให้ดีขึ้นและการมีส่วนร่วมเกี่ยวกับฟีเจอร์ของชุมชน เตรียมพร้อมสำหรับการรองรับการใช้งานและฐานของโค้ดที่เพิ่มขึ้นเรื่อยๆ ทีม Bazel จะให้ความสำคัญกับการผสานรวมเครื่องมือสร้าง Android กับกฎของ Android ของ Bazel

  • อัปเดต D8 เป็น v. 3.3.28 และตั้งค่าเป็น Dexer เริ่มต้น
  • ผสานรวมกับการสนับสนุนฟีเจอร์หลักของชุมชนที่เพิ่มลงใน 5.X รวมถึงการสนับสนุนต่อไปนี้
    • ผู้ปฏิบัติงานถาวรที่มี D8
    • กรองน้ำตาลโดยใช้ D8
    • การรวมแท็ก "uses-permissions" ในไฟล์ Manifest ของ Android
    • ผู้ปฏิบัติงาน Multiplex ในการประมวลผลทรัพยากร Android

Toolchain ที่ไม่บังคับ

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

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

JetBrains ร่วมมือกับ Bazel เพื่อร่วมบำรุงรักษาปลั๊กอิน Bazel IntelliJ IDEA เพื่อสนับสนุนเป้าหมายในการเพิ่มการดูแลชุมชนและขยายขีดความสามารถสำหรับคำขอฟีเจอร์และการพัฒนา

  • ปลั๊กอิน IntelliJ เวอร์ชัน 2022.2 รองรับปลั๊กอิน JetBrains ล่าสุด
  • เพิ่มความเข้ากันได้กับการพัฒนาจากระยะไกล
  • การพัฒนาเพิ่มเติมที่ขับเคลื่อนโดยชุมชนสำหรับฟีเจอร์ที่กำลังทำงานอยู่ เช่น การสนับสนุน Scala

สำหรับข้อมูลเพิ่มเติมเกี่ยวกับการพัฒนานี้ โปรดอ่านประกาศในบล็อกของ Bazel-JetBrains

การพัฒนาในอนาคต

เมื่อมองไปในอนาคต ทีม Bazel ได้เริ่มพัฒนาหรือคาดการณ์ลําดับความสําคัญของฟีเจอร์ต่อไปนี้ในปี 2023 และปีต่อๆ ไป

การปรับปรุงกฎการสร้าง Android ของ Bazel

ลงทุนพัฒนาแอป Android อย่างต่อเนื่องโดยมุ่งเน้นที่เวิร์กโฟลว์ผ่านการสร้าง การทดสอบ และการทำให้ใช้งานได้

  • การย้ายข้อมูลไปยังและการสนับสนุนสำหรับ R8
  • การอัปเดตกฎ Android รวมถึงการแปลเป็นภาษา Starlark
  • การรองรับ App Bundle
  • รองรับ NDK เวอร์ชันล่าสุด
  • ทดสอบการครอบคลุมของโค้ด

เครื่องมือในการปฏิบัติตามข้อกำหนดเกี่ยวกับใบอนุญาต OSS

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

  • ความสามารถในการตรวจสอบแพ็กเกจที่เป้าหมายหนึ่งๆ ใช้
  • ความสามารถในการสร้างการตรวจสอบการปฏิบัติตามข้อกำหนดของใบอนุญาตเฉพาะองค์กร

ดูการติดตั้งใช้งานกฎการกำหนดราคาที่อยู่ระหว่างดำเนินการใน GitHub

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

ในตอนเปิดตัว Bzlmod ได้ปรับปรุงความสามารถในการปรับขนาดและความเสถียรของทรัพยากร Dependency แบบสับเปลี่ยน ในอีก 3 ปีข้างหน้า Bzlmod ตั้งใจที่จะเปลี่ยน WORKSPACE เป็นระบบย่อยการจัดการทรัพยากร Dependency เริ่มต้นของ Bazel ฟีเจอร์ที่กำหนดเป้าหมายมีดังนี้

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

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

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

API แพลตฟอร์มมาตรฐาน

Platforms API ใหม่จะทำให้การกําหนดค่าสถาปัตยกรรมเป็นมาตรฐานสําหรับบิลด์หลายภาษาและหลายแพลตฟอร์ม ฟีเจอร์นี้ช่วยให้นักพัฒนาแอปสามารถลดข้อผิดพลาดเกี่ยวกับเวลาในการพัฒนาที่เสียค่าใช้จ่ายและความซับซ้อนในการสร้างบิลด์ขนาดใหญ่ได้

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

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

การดำเนินการจากระยะไกลด้วย "สร้างโดยไม่มีไบต์"

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

  • ใช้การดาวน์โหลดแบบไม่พร้อมกันเพื่อให้การดำเนินการภายในและระยะไกลเริ่มต้นทันทีที่ดาวน์โหลดเอาต์พุตที่เกี่ยวข้อง
  • เพิ่มการรองรับ Symlinks
  • เรียกข้อมูลเอาต์พุตระดับกลางจากการดำเนินการระยะไกลเมื่อบิลด์เสร็จสมบูรณ์

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