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

ภาพรวม

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

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

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

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

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

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

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

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

  • Bzlmod เปลี่ยนจาก "ทดลอง" เป็น "พร้อมให้บริการสำหรับผู้ใช้ทั่วไป"
  • รวมถึงรองรับ rules\_jvm\_external ซึ่งช่วยให้ผู้ใช้ดาวน์โหลดทรัพยากร Dependency ของ Maven สำหรับโปรเจ็กต์ Java ได้
  • Bzlmod Migration Guide มีเครื่องมือ สคริปต์ และเอกสารประกอบสำหรับทีมที่ต้องการใช้ 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 ซึ่งรวมถึงการรองรับรายการต่อไปนี้
    • Persistent Worker ที่มี D8
    • Desugaring โดยใช้ D8
    • การผสานแท็ก "uses-permissions" ในไฟล์ Manifest ของ Android
    • Multiplex Worker ในการประมวลผลทรัพยากร Android

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

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

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

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 ในฐานะระบบย่อยการจัดการการขึ้นต่อกันของพื้นที่ทำงาน Bazel เริ่มต้น ฟีเจอร์เป้าหมายมีดังนี้

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

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

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

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

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

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

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

การดำเนินการจากระยะไกลด้วย "Builds without the Bytes"

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

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

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