ภาพรวม
สวัสดีปีใหม่ชุมชน 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 เพิ่มประสิทธิภาพโดยหลีกเลี่ยงการดาวน์โหลดอาร์ติแฟกต์ระดับกลางและป้องกันไม่ให้การบิลด์ติดขัดเนื่องจากแบนด์วิดท์เครือข่าย ฟีเจอร์ที่เพิ่มเข้ามามีดังนี้
การรองรับการนำแคชระยะไกลออกด้วยบริการสัญญาเช่า เพื่อให้ผู้ใช้ไม่พบข้อผิดพลาดเมื่อมีการนำอาร์ติแฟกต์ออกก่อนเวลาอันควร
แก้ไขช่องโหว่ของฟีเจอร์ที่อยู่ในการรองรับ Symlink
ระบุตัวเลือกในการดึงข้อมูลเอาต์พุตระดับกลางจากการดำเนินการระยะไกล
เพิ่มประสิทธิภาพการทำงานด้วย 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