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à các dự án đang diễn ra.
Bản phát hành Bazel 8.0
Chúng tôi dự định sẽ cung cấp cho bạn bản phát hành Bazel 8.0 hỗ trợ dài hạn (LTS) vào cuối năm 2024. Chúng tôi dự định sẽ 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á. Bắt đầu 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 đối với 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 mới để theo dõi thư mục (xem #21435, được phát hành trong Bazel 7.1).
- Cải thiện lược đồ để tạo tên kho lưu trữ chính tắc nhằm cải thiện 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ợ chế độ 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 các tệp khoá (#20396).
- MODULE.bazel 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 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 khả năng song song với cờ
--jobs. - Giúp bạn dễ dàng gỡ lỗi các lỗi bộ nhớ đệm bằng nhật ký thực thi nhỏ gọn mới, giảm kích thước của nhật ký này xuống 100 lần và giảm đáng kể chi phí hoạt động của thời gian chạy (xem #18643).
- Triển khai tính năng thu gom rác cho bộ nhớ đệm của ổ đĩ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ữ chuyên dụng và tách chúng khỏi các bản phát hành Bazel. Việc này cho phép người dùng Bazel và tác giả quy tắc
- Cập nhật quy tắc độc lập với Bazel.
- Cập nhật và tuỳ chỉnh quy tắc nếu 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ủa các bộ quy tắc đó đều 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 bao giờ 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 hiện có và các API quy tắc phụ, đồng thời đánh dấu chúng là không mang tính 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 tất gói là một tính năng được đề xuất để thêm tính năng hỗ trợ hạng nhất cho logic xác thực gói tuỳ chỉnh. Chúng được dùng để giúp chúng tôi ngừng sử 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 cải thiện hiệu suất bộ nhớ đệm từ xa và tốc độ xây dựng cho các nhà thiết kế quy tắc sử dụng quá trình chuyển đổi.
- Tự động đặt cờ bản 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 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 gia tăng nhanh chó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 mức sử dụ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.
Phạm vi ban đầu chỉ nhằm cải thiện chỉ số heap được giữ lại. Có thể giảm heap cao nhất, nhưng không nằm trong phạm vi ban đầu.
Khác
- Lượt cài đặt trên thiết bị di động phiên bản 3, một phương pháp đơn giản hơn và được duy trì tốt hơn để triển khai gia tăng 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í hoạt động của hộp cát.
Hỗ trợ IntelliJ IDEA của Bazel-JetBrains*
Cập nhật gia tăng 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ụp nhanh các mục tiêu và không được coi là sự đảm bảo. Các ưu tiên có thể thay đổi để phản hồi ý 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ả thông tin cập nhật cho lộ trình này), hãy tham gia cộng đồng nhóm trên Google Groups.
*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