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

รายงานปัญหา ดูแหล่งที่มา

ภาพรวม

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

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

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

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

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

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

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

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

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

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

แบบสำรวจความพึงพอใจของนักพัฒนาแอปของเราแสดงให้เห็นว่าผู้เขียนกฎต้องการการสนับสนุนสำหรับการพัฒนาเครื่องมือเชนเพิ่มเติม 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

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

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

ดูการใช้งานrules_Licenseที่กำลังดำเนินการบน GitHub

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

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

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

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

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

API ของแพลตฟอร์มที่ได้มาตรฐาน

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

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

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

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

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

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

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