Lộ trình của Bazel

Báo cáo vấn đề Xem nguồn Nightly · 8.1 · 8.0 · 7.6 · 7.5 · 7.4

Bazel tiếp tục phát triển để đáp ứng nhu cầu của bạn. Vì vậy, chúng tôi muốn chia sẻ thông tin cập nhật về lộ trình của mình cho năm 2025.

Chúng tôi dự định cung cấp dịch vụ hỗ trợ dài hạn (LTS) cho Bazel 9.0 vào cuối năm 2025.

Chuyển đổi hoàn toàn sang Bzlmod

Bzlmod là hệ thống phần phụ thuộc bên ngoài tiêu chuẩn trong Bazel kể từ Bazel 7, thay thế hệ thống WORKSPACE cũ. Kể từ tháng 3 năm 2025, Cơ quan đăng ký trung tâm của Bazel lưu trữ hơn 650 mô-đun.

Với Bazel 9, chúng tôi sẽ xoá hoàn toàn chức năng WORKSPACE và Bzlmod sẽ là cách duy nhất để giới thiệu các phần phụ thuộc bên ngoài trong Bazel. Để giảm thiểu chi phí di chuyển cho cộng đồng, chúng tôi sẽ tập trung cải thiện thêm hướng dẫncông cụ di chuyển.

Ngoài ra, chúng tôi dự định triển khai bộ nhớ đệm kho lưu trữ dùng chung được cải thiện (xem #12227) với tính năng thu gom rác và có thể điều chỉnh cho phiên bản cũ về Bazel 8. Cũng sẽ hỗ trợ việc xác minh chứng thực SLSA.

Di chuyển các quy tắc Android, C++, Java, Python và Proto

Với Bazel 8, chúng tôi đã di chuyển tính năng hỗ trợ cho các quy tắc Android, Java, Python và Proto từ cơ sở mã Bazel sang các quy tắc Starlark trong kho lưu trữ tương ứng. Để dễ dàng di chuyển, chúng tôi đã triển khai các tính năng tự động tải trong Bazel. Bạn có thể kiểm soát các tính năng này bằng cờ --incompatible_autoload_externally--incompatible_disable_autoloads_in_main_repo.

Với Bazel 9, chúng tôi dự định tắt tính năng tự động tải theo mặc định và yêu cầu mọi dự án tải rõ ràng các quy tắc bắt buộc trong tệp BUILD.

Chúng ta sẽ viết lại hầu hết tính năng hỗ trợ ngôn ngữ C++ thành Starlark, tách nó khỏi tệp nhị phân Bazel và chuyển vào kho lưu trữ /rules_cc. Đây là tính năng hỗ trợ ngôn ngữ chính còn lại duy nhất vẫn thuộc về Bazel.

Chúng tôi cũng đang chuyển các chương trình kiểm thử đơn vị cho quy tắc C++, Java và Proto sang Starlark, di chuyển các chương trình kiểm thử này sang kho lưu trữ bên cạnh quá trình triển khai để tăng tốc độ của tác giả quy tắc.

Cải tiến Starlark

Bazel sẽ có khả năng đánh giá các macro tượng trưng một cách lười biếng. Điều này có nghĩa là một macro tượng trưng sẽ không chạy nếu các mục tiêu mà macro đó khai báo không được yêu cầu, giúp cải thiện hiệu suất cho các gói rất lớn.

Starlark sẽ có một hệ thống loại thử nghiệm, tương tự như chú thích loại của Python. Chúng tôi dự kiến hệ thống loại sẽ ổn định sau khi Bazel 9 ra mắt.

Khả năng định cấu hình

Chúng tôi tập trung vào việc giảm chi phí và sự nhầm lẫn của các cờ bản dựng.

Chúng tôi đang thử nghiệm một mô hình cấu hình dự án mới mà người dùng không cần phải biết cần đặt cờ bản dựng và cờ kiểm thử ở đâu. Vì vậy, $ bazel test //foo sẽ tự động đặt các cờ phù hợp dựa trên chính sách của dự án foo. Tính năng này có thể vẫn ở giai đoạn thử nghiệm trong phiên bản 9.0, nhưng chúng tôi rất mong nhận được ý kiến phản hồi của bạn.

Tính năng đặt phạm vi cờ cho phép bạn xoá các cờ Starlark khi chúng rời khỏi ranh giới dự án, nhờ đó không làm gián đoạn việc lưu vào bộ nhớ đệm trên các phần phụ thuộc bắc cầu không cần đến các cờ đó. Điều này giúp các bản dựng sử dụng hiệu ứng chuyển đổi rẻ hơn và nhanh hơn. Sau đây là một ví dụ. Chúng tôi đang mở rộng ý tưởng để kiểm soát những cờ nào sẽ truyền đến cấu hình thực thi và đang cân nhắc hỗ trợ linh hoạt hơn nữa như Starlark tuỳ chỉnh để xác định các cạnh phần phụ thuộc nào sẽ truyền cờ.

Chúng tôi đang ưu tiên nỗ lực di chuyển các cờ ngôn ngữ tích hợp sẵn ra khỏi Bazel và vào Starlark, nơi chúng có thể tồn tại cùng với các định nghĩa quy tắc liên quan.

Cải tiến tính năng thực thi từ xa

Chúng tôi dự định bổ sung tính năng hỗ trợ thực thi không đồng bộ, tăng tốc độ thực thi từ xa bằng cách tăng tính song song.


Để theo dõi các bản cập nhật về lộ trình và thảo luận về các tính năng đã lên kế hoạch, hãy tham gia máy chủ Slack của cộng đồng tại slack.bazel.build.

Lộ trình này nhằm giúp cộng đồng nắm được ý định của nhóm đối với Bazel 9.0. Các mức độ ưu tiên có thể thay đổi theo phản hồi của nhà phát triển và khách hàng hoặc theo các cơ hội mới trên thị trường.