Lộ trình của Bazel

Báo cáo vấn đề Xem nguồn Nightly .

Tổng quan

Vì dự án Bazel tiếp tục phát triển để đáp ứng nhu cầu của bạn, nên chúng tôi muốn chia sẻ bản cập nhật năm 2024.

Lộ trình này mô tả các sáng kiến và dự đoán hiện tại cho tương lai của việc phát triển Bazel, giúp bạn nắm rõ các ưu tiên hiện tại và các dự án đang triển khai.

Bản phát hành Bazel 8.0

Chúng tôi dự định cung cấp dịch vụ hỗ trợ dài hạn (LTS) Bazel 8.0 cho bạn vào cuối năm 2024. Chúng tôi dự định triển khai các tính năng sau đây.

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 mở rộng quy mô dự án trong khi vẫn đảm bảo tốc độ 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 --enable_workspace); với Bazel 9 WORKSPACE sẽ bị xoá. Kể từ Bazel 7.1, bạn có thể thiết lập --noenable_workspace để chọn sử dụng hành vi mới.

Bazel 8.0 sẽ có một số tính năng nâng cao cho 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 xem thư mục mới (xem #21435, được vận chuyển trong Bazel 7.1).
  • Cải thiện lược đồ tạo tên kho lưu trữ chuẩn hoá để có thể lưu các thao tác vào bộ nhớ đệm tốt hơn khi cập nhật phiên bản phần phụ thuộc. (#21316, vận chuyển trong Bazel 7.1)
  • Bộ nhớ đệm của 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 có 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).
  • Đã phân đoạn MODULE.bazel (#17880)
  • Cho phép ghi đè kho lưu trữ được tạo cho tiện ích mô-đun (#19301)
  • Cải thiện tài liệu (ví dụ: #18030, #15821) và hướng dẫn di chuyển và công cụ di chuyển.

Cải tiến quy trình thực thi từ xa

  • Thêm tính năng hỗ trợ cho quá trình thực thi không đồng bộ, tăng tốc độ thực thi từ xa bằng cách tăng cường tính song song với cờ --jobs.
  • Nhật ký thực thi nhỏ gọn mới giúp bạn dễ dàng gỡ lỗi bộ nhớ đệm bị thiếu, giảm đáng kể kích thước bộ nhớ đệm đi 100 lần và mức hao tổn thời gian chạy (xem #18643).
  • Triển khai tính năng thu thập 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 từng phần các đầu ra bản dựng tuỳ ý xuống (xem #20933).

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

Hoàn tất quá trình di chuyển các bộ quy tắc của 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. 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 một cách độ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 tập hợp quy tắc sẽ là bazelbuild/rules_android, rules_cc, rules_java, rules_pythongoogle/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. Cờ này sẽ tự động sử dụng các quy tắc trước đây là một phần của tệp nhị phân qua kho lưu trữ của chúng. Tất cả người dùng của các bộ quy tắc đó sẽ phụ thuộc vào kho lưu trữ của chúng và tải chúng theo cách tương tự như các bộ quy tắc khác chưa từng thuộc về 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 chúng là không thử nghiệm.

Các điểm cải tiến của 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ũ (Bazel chỉ có ít thông tin chi tiết về nó), macro biểu tượng giúp người dùng tránh các lỗi phổ biến 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 nhằm mục đích giúp chúng tôi ngừng sử dụng native.existing_rules().

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

  • Hoạt động ánh xạ đường dẫn đầu ra tiếp tục ổn định: hứa hẹn hiệu suất bộ nhớ đệm từ xa và tốc độ bản dựng tốt hơn cho những nhà thiết kế quy tắc sử dụng hiệu ứng chuyển đổi.
  • Tự động thiết lập cờ bản dựng phù hợp với 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 mục tiêu bằng cờ mặc định mà không cần phải đặt bazelrcs.
  • Không làm lại quá trình phân tích bản dựng mỗi khi cờ bản dựng thay đổi.

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

Bazel nắm giữ rất nhiều trạng thái trong RAM để hỗ trợ các bản dựng gia tăng nhanh. 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ờ là một trong các phần phụ thuộc bên ngoài). Với Skyfocus, Bazel sẽ mang đến 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 bản dựng gia tăng nhanh chóng tương tự.

Phạm vi ban đầu chỉ nhằm cải thiện chỉ số vùng nhớ khối xếp được giữ lại. Tính năng giảm vùng nhớ khối xếp cao nhất là có thể áp dụng, nhưng không được đưa vào phạm vi ban đầu.

Tính năng khác

  • 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ì hiệu quả hơn để từng bước triển khai các ứng dụng Android.
  • Thu gom rác cho bộ nhớ đệm của kho lưu trữ và install_base của Bazel.
  • Giảm mức hao tổn hộp cát.

Hỗ trợ Bazel-JetBrains* IntelliJ IDEA

Các bản cập nhật trình bổ trợ IntelliJ tăng dần để hỗ trợ bản phát hành trình bổ trợ JetBrains mới nhất.

Lộ trình này nhắm đến mục tiêu tổng quan nhanh và không nên dùng để đảm bảo. 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ơ 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ả thông tin cập nhật về 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