Tổng quan
Khi dự án 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 năm 2024.
Lộ trình này mô tả các sáng kiến hiện tại và dự đoán về tương lai của quá trình phát triển Bazel, giúp bạn nắm được các ưu tiên hiện tại và dự án đang diễn ra.
Bản phát hành Bazel 8.0
Chúng tôi dự định cung cấp cho bạn tính năng hỗ trợ dài hạn (LTS) cho Bazel 8.0 vào cuối năm 2024. Chúng tôi dự định triển khai các tính năng sau.
Bzlmod: hệ thống quản lý phần phụ thuộc bên ngoài
Bzlmod tự động giải quyết các phần phụ thuộc bắc cầu, cho phép các dự án mở rộng quy mô trong khi vẫn duy trì tốc độ và hiệu quả sử dụng tài nguyên.
Với Bazel 8, chúng tôi sẽ tắt tính năng hỗ trợ WORKSPACE theo mặc định (bạn vẫn có thể bật tính năng này bằng cách sử dụng --enable_workspace); với Bazel 9, tính năng hỗ trợ WORKSPACE sẽ bị xoá. Kể từ Bazel 7.1, bạn có thể đặt --noenable_workspace để chọn sử dụng hành vi mới.
Bazel 8.0 sẽ có một số điểm cải tiến về chức năng quản lý phần phụ thuộc bên ngoài của Bazel, bao gồm:
- Bạn có thể đặt cờ mới
--enable_workspacethànhfalseđể tắt hoàn toàn chức năng WORKSPACE. - API theo dõi thư mục mới (xem #21435, được phát hành trong Bazel 7.1).
- Cải thiện sơ đồ tạo tên kho lưu trữ chính tắc để tăng khả năng lưu vào bộ nhớ đệm của các hành động trên các bản cập nhật phiên bản phần phụ thuộc. (#21316, được phát hành trong Bazel 7.1)
- Bộ nhớ đệm kho lưu trữ dùng chung được cải thiện (xem #12227).
- Hỗ trợ nhà cung cấp và chế độ ngoại tuyến – cho phép người dùng chạy bản dựng với các phần phụ thuộc đã tải xuống trước (xem #19563).
- Giảm xung đột hợp nhất trong tệp khoá (#20396).
- MODULE.bazel được phân đoạn (#17880)
- Cho phép ghi đè kho lưu trữ do tiện ích mô-đun tạo (#19301)
- Cải thiện tài liệu (ví dụ: #18030, #15821) và hướng dẫn di chuyển cũng như công cụ di chuyển.
Cải tiến về việc thực thi từ xa
- Thêm 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 với cờ
--jobs. - Giúp bạn dễ dàng gỡ lỗi khi không tìm thấy bộ nhớ đệm bằng nhật ký thực thi nhỏ gọn mới, giảm kích thước nhật ký này xuống 100 lần và giảm đáng kể chi phí thời gian chạy (xem #18643).
- Triển khai tính năng thu gom rác cho bộ nhớ đệm trên đĩa (xem #5139).
- Triển khai dịch vụ đầu ra từ xa để cho phép tải xuống chậm các đầu ra bản dựng tuỳ ý (xem #20933).
Di chuyển các quy tắc Android, C++, Java, Python và Proto
Hoàn tất quá trình di chuyển các bộ quy tắc Android, C++, Java và Python sang các kho lưu trữ riêng và tách các bộ quy tắc này khỏi các bản phát hành Bazel. Nỗ lực này cho phép người dùng Bazel và tác giả quy tắc
- Cập nhật các quy tắc độc lập với Bazel.
- Cập nhật và tuỳ chỉnh các quy tắc khi cần.
Vị trí mới của các bộ quy tắc sẽ là bazelbuild/rules_android, rules_cc, rules_java, rules_python và google/protobuf. rules_proto sẽ không được dùng nữa.
Bazel 8 sẽ cung cấp một cờ di chuyển tạm thời để tự động sử dụng các bộ quy tắc trước đây là một phần của tệp nhị phân từ kho lưu trữ của chúng. Tất cả người dùng các bộ quy tắc đó dự kiến sẽ phụ thuộc vào kho lưu trữ của chúng và tải các bộ quy tắc đó tương tự như các bộ quy tắc khác chưa từng là một phần của Bazel.
Bazel 8 cũng sẽ cải thiện các quy tắc mở rộng và API quy tắc phụ hiện có, đồng thời đánh dấu các quy tắc này là không còn ở giai đoạn thử nghiệm.
Cải tiến Starlark
- Macro tượng trưng là một cách mới để viết macro, thân thiện hơn với người dùng
BUILD, tác giả macro và công cụ. So với các macro cũ mà Bazel chỉ có thông tin chi tiết hạn chế, macro tượng trưng giúp người dùng tránh được những lỗi thường gặp và thực thi các phương pháp hay nhất. - Trình hoàn thiện gói là một tính năng được đề xuất để thêm tính năng hỗ trợ hàng đầu cho logic xác thực gói tuỳ chỉnh. Chúng tôi dự định sử dụng tính năng này để ngừng dùng
native.existing_rules().
Khả năng định cấu hình
- Quá trình liên kết đường dẫn đầu ra tiếp tục ổn định: hứa hẹn mang lại hiệu suất bộ nhớ đệm từ xa và tốc độ xây dựng tốt hơn cho các nhà thiết kế quy tắc sử dụng quá trình chuyển đổi.
- Tự động đặt cờ xây dựng phù hợp cho một
--platformsnhất định. - Xác định các tổ hợp cờ được dự án hỗ trợ và tự động xây dựng mục tiêu bằng các cờ mặc định mà không cần đặt bazelrc.
- Không cần thực hiện lại quá trình phân tích bản dựng mỗi khi cờ bản dựng thay đổi.
Dự án Skyfocus – giảm thiểu cấu trúc dữ liệu được giữ lại
Bazel giữ nhiều trạng thái trong RAM để xây dựng nhanh các bản dựng gia tăng. Tuy nhiên, nhà phát triển thường thay đổi một tập hợp con nhỏ của các tệp nguồn (ví dụ: hầu như không bao giờ thay đổi một trong các phần phụ thuộc bên ngoài). Với Skyfocus, Bazel sẽ cung cấp một cách thử nghiệm để loại bỏ trạng thái gia tăng không cần thiết và giảm dung lượng bộ nhớ của Bazel, đồng thời vẫn mang lại trải nghiệm xây dựng gia tăng nhanh chóng như cũ.
Phạm vi ban đầu chỉ nhằm cải thiện chỉ số heap được giữ lại. Có thể giảm heap tối đa, nhưng không nằm trong phạm vi ban đầu.
Khác
- Mobile install v3, một phương pháp đơn giản hơn và được duy trì tốt hơn để triển khai từng bước các ứng dụng Android.
- Thu gom rác cho bộ nhớ đệm kho lưu trữ và
install_basecủa Bazel. - Giảm chi phí hộp cát.
Hỗ trợ Bazel-JetBrains* IntelliJ IDEA
Các bản cập nhật từng bước cho trình bổ trợ IntelliJ để hỗ trợ bản phát hành trình bổ trợ JetBrains mới nhất.
Lộ trình này chỉ chụp nhanh các mục tiêu và không được coi là đảm bảo. 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 các cơ hội mới trên thị trường.
Để được thông báo về các tính năng mới (bao gồm cả các bản cập nhật cho lộ trình này), hãy tham gia cộng đồng Nhóm Google.
*Bản quyền © 2022 JetBrains s.r.o. JetBrains và IntelliJ là các nhãn hiệu đã đăng ký của JetBrains s.r.o