Lộ trình của Bazel

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 mứ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 cung cấp cho bạn dịch vụ 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 phân giải 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 độ nhanh và tiết kiệm 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 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 đố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_workspace thành false để tắt hoàn toàn chức năng WORKSPACE.
  • API theo dõi thư mục mới (xem #21435, được cung cấp trong Bazel 7.1).
  • Cải thiện sơ đồ để tạo tên kho lưu trữ chuẩn nhằm cải thiện khả năng lưu vào bộ nhớ đệm của các thao tác trong quá trình cập nhật phiên bản phần phụ thuộc. (#21316, được vận chuyển 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 các bản dựng có phần phụ thuộc đượ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 đượ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) cũng như hướng dẫn di chuyển và công cụ di chuyển.

Cải thiện khả năng 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 các lần truy cập không tìm thấy trong bộ nhớ đệm bằng nhật ký thực thi nhỏ gọn mới, giảm kích thước 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 tuỳ ý các đầu ra bản dựng (xem #20933).

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

Hoàn tất việc di chuyển các nhóm quy tắc Android, C++, Java và Python sang các kho lưu trữ chuyên dụng, đồng thời tách các nhóm 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 nếu cần.

Vị trí mới của các nhóm quy tắc sẽ là bazelbuild/rules_android, rules_cc, rules_java, rules_pythongoogle/protobuf. rules_proto sắp 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 nhóm quy tắc từng 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 nhóm quy tắc đó dự kiến sẽ phụ thuộc vào các kho lưu trữ của họ và tải chúng tương tự như các nhóm quy tắc khác chưa bao giờ thuộc Bazel.

Bazel 8 cũng sẽ cải thiện các API quy tắc mở rộng và quy tắc phụ hiện có, đồng thời đánh dấu chúng là không mang tính thử nghiệm.

Cải tiến Starlark

  • Symbolic Macro 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 cạm bẫy thường gặp và thực thi các phương pháp hay nhất.
  • Trình kết thúc gói là một tính năng được đề xuất để thêm khả năng hỗ trợ hàng đầu cho logic xác thực gói tuỳ chỉnh. Mục đích của các chỉ số này là giúp chúng tôi ngừng sử dụng native.existing_rules().

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

  • Quy 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 những nhà thiết kế quy tắc sử dụng các hiệu ứng chuyển đổi.
  • Tự động đặt cờ bản dựng phù hợp cho một --platforms nhất định.
  • Xác định các tổ hợp cờ được dự án hỗ trợ và tự động tạo các mục tiêu bằng cờ mặc định mà không cần phải thiết lập bazelrc.
  • Không cần phân tích lại bản dựng mỗi khi cờ bản dựng thay đổi.

Project Skyfocus – giảm thiểu các cấu trúc dữ liệu được giữ lại

Bazel lưu trữ nhiều trạng thái trong RAM để tạo các bản dựng gia tăng nhanh chóng. Tuy nhiên, các nhà phát triển thường thay đổi một nhóm nhỏ 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, trong khi 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 mục đích cải thiện chỉ số heap được giữ lại. Giảm kích thước vùng nhớ heap tối đa là một khả năng, 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 và được duy trì tốt hơn để triển khai tăng dần các ứng dụng Android.
  • Thu gom rác cho bộ nhớ đệm kho lưu trữ và install_base của Bazel.
  • Giảm mức hao tổn khi sử dụng hộp cát.

Hỗ trợ Bazel-JetBrains* IntelliJ IDEA

Các bản cập nhật gia tăng 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ỉ là thông tin tổng quan về các mục tiêu và không được coi là thông tin đảm bảo. Các mức độ ưu tiên có thể thay đổi theo ý 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.

Để nhận thông báo về các tính năng mới (bao gồm cả nội dung cập nhật cho lộ trình này), hãy tham gia cộng đồng Google Group.

*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