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

รายงานปัญหา ดูแหล่งที่มา รุ่น Nightly · 8.0 7.4 7.3 · 7.2 · 7.1 · 7.0 · 6.5

ภาพรวม

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

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

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

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

ไตรมาสที่ 4 — เปิดตัว Bazel 6.0

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

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

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

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

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

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

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

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

เครื่องมือทางเทคนิคที่ไม่บังคับ

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

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

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

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

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

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

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

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

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

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

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

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

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

ดูการใช้งาน rules_license ที่อยู่ระหว่างดำเนินการบน GitHub

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

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

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

บิวด์ที่ลงชื่อ

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

Standardized Platforms API

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

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

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

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

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

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

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