Lộ trình của Bazel

Báo cáo vấn đề Xem nguồn Nightly · 8.0 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

Tổng quan

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

Lộ trình này mô tả các sáng kiến và dự đoán hiện tại 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 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 nhanh chóng 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, 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ẽ chứa một số điểm cải tiến 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 theo dõi thư mục mới (xem #21435, được vận chuyển trong Bazel 7.1).
  • Cải tiến lược đồ tạo tên kho lưu trữ chuẩn để các thao tác có thể lưu vào bộ nhớ đệm tốt hơn trong các bản cập nhật phiên bản phần phụ thuộc. (#21316, được vận chuyển trong Bazel 7.1)
  • Cải thiện bộ nhớ đệm kho lưu trữ dùng chung (xem #12227).
  • Hỗ trợ chế độ ngoại tuyến và nhà cung cấp — 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 tệp khoá (#20396).
  • Phân đoạn MODULE.bazel (#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 tiến tính 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.
  • Dễ dàng gỡ lỗi các lần thiếu bộ nhớ đệm hơn 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ể mức hao tổn 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 từng phần 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 việc di chuyển các quy tắc của Android, C++, Java và Python sang các kho lưu trữ chuyên dụng và tách các quy tắc đó khỏi các bản phát hành Bazel. Nhờ đó, người dùng Bazel và tác giả quy tắc có thể

  • Cập nhật 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 bộ 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 sẽ tự động sử dụng các nhóm 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. Cuối cùng, tất cả người dùng các bộ quy tắc đó sẽ phụ thuộc vào kho lưu trữ của họ 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ờ 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 các quy tắc này là không mang tính thử nghiệm.

Cải tiến Starlark

  • Macro ký hiệu 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ác sai lầm phổ biến 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 tính năng hỗ trợ hàng đầu cho logic xác thực gói tuỳ chỉnh. Các lớp này nhằm giúp chúng ta ngừng sử dụng native.existing_rules().

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

  • Việc liên kết đường dẫn đầu ra tiếp tục ổn định: hứa hẹn hiệu suất bộ nhớ đệm từ xa tốt hơn và tốc độ xây dựng cho các nhà thiết kế quy tắc sử dụng hiệu ứng chuyển đổi.
  • Tự động đặt 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ác cờ mặc định mà không cần đặt bazelrcs.
  • Đừng phân tích lại 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 lưu giữ nhiều trạng thái trong RAM để tạo bản 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á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 như cũ.

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. Có thể giảm kích thước vùng nhớ khối xếp đỉnh, nhưng không nằm trong phạm vi ban đầu.

Khác

  • Cài đặt di động phiên bản 3, một phương pháp đơn giản và dễ bảo trì hơn để triển khai ứng dụng Android một cách tăng dần.
  • Thu gom rác cho bộ nhớ đệm kho lưu trữ và install_base của Bazel.
  • Giảm hao tổn khi sử dụng hộp cát.

Hỗ trợ IntelliJ IDEA Bazel-JetBrains*

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

Lộ trình này chỉ cung cấp thông tin nhanh về các mục tiêu và không được coi là đả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 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