Khi Bazel tiếp tục phát triển để đáp ứng nhu cầu của bạn, chúng tôi muốn chia sẻ thông tin cập nhật về lộ trình 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ũ. Tính đến tháng 3 năm 2025, Bazel Central Registry lưu trữ hơn 650 mô-đun.
Với Bazel 9, chúng tôi sẽ loại bỏ 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 vào việc cải thiện thêm hướng dẫn và cô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 thập rác và có thể chuyển ngược lại bộ nhớ đệm này sang Bazel 8. Bazel Central Registry cũng sẽ hỗ trợ 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 ra khỏi cơ sở mã Bazel vào các quy tắc Starlark trong kho lưu trữ tương ứng. Để giúp việc di chuyển dễ dàng hơ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 và --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 phải tải rõ ràng các quy tắc cần thiết trong tệp BUILD.
Chúng tôi sẽ viết lại hầu hết tính năng hỗ trợ ngôn ngữ C++ sang Starlark, tách tính năng này 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 cuối cùng vẫn thuộc Bazel.
Chúng tôi cũng đang chuyển các bài kiểm thử đơn vị cho các quy tắc C++, Java và Proto sang Starlark, chuyển các bài 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 chậm rãi. Đ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 này 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 kiểu thử nghiệm, tương tự như chú thích kiểu của Python. Chúng tôi dự kiến hệ thống kiểu sẽ ổn định sau khi Bazel 9 được ra mắt.
Khả năng định cấu hình
Chúng tôi tập trung chủ yếu 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 không yêu cầu người dùng phải biết cờ bản dựng
và kiểm thử nào cần đặt ở đâu. Vì vậy, $ bazel test //foo sẽ tự động đặt
đúng cờ 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 hướng dẫn.
Phạm vi cờ cho phép bạn loại bỏ các cờ Starlark khi chúng rời khỏi ranh giới dự án, vì vậy, các cờ này không làm hỏng bộ nhớ đệm trên các phần phụ thuộc bắc cầu không cần đến chúng. Điều này giúp các bản dựng sử dụng quá trình chuyển đổi trở nên rẻ hơn và nhanh hơn. Dưới đây là một ví dụ. Chúng tôi đang mở rộng ý tưởng này để kiểm soát những cờ nào 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 những 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 ra khỏi Bazel và vào Starlark, nơi các cờ này 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 quá trình thực thi từ xa
Chúng tôi dự định thêm tính năng hỗ trợ thực thi không đồng bộ, tăng tốc quá trình thực thi từ xa bằng cách tăng tính song song.
Để theo dõi thông tin 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ộng đồng tại slack.bazel.build.
Lộ trình này nhằm mục đích giúp cộng đồng nắm được ý định của nhóm đối với Bazel 9.0. Các ưu tiên có thể thay đổi để đáp ứng ý kiến phản hồi của nhà phát triển và khách hàng hoặc để nắm bắt các cơ hội mới trên thị trường.