Lộ trình của Bazel

Báo cáo vấn đề Xem nguồn Hằng đêm · 7,3 · 7,2 · 7.1 · 7 · 6,5

Tổng quan

Do 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ẻ bản cập nhật năm 2024 của chúng tôi.

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 Phát triển Bazel, giúp bạn hiểu rõ các ưu tiên hiện tại và dự án.

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 cho Bazel 8.0 (LTS) 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 bắc cầu phần phụ thuộc, cho phép dự án mở rộng quy mô mà vẫn duy trì được tốc độ và hiệu quả về 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 (chế độ này vẫn sẽ có thể bật tính năng này bằng --enable_workspace); với Bazel 9 WORKSPACE chế độ hỗ trợ sẽ bị xoá. Kể từ Bazel 7.1, bạn có thể đặt --noenable_workspace để chọn áp dụng hành vi mới.

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

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 tính song song với cờ --jobs.
  • Giúp gỡ lỗi bộ nhớ đệm bị thiếu nhờ nhật ký thực thi nhỏ gọn mới, giảm đáng kể kích thước của ứng dụng và giảm đáng kể chi phí trong 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 bản dựng tuỳ ý xuống đầu ra (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 Android, C++, Java và Python sang các bộ quy tắc chuyên dụng kho lưu trữ mới và tách chúng khỏi 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 đến

  • 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 bộ quy tắc sẽ là bazelbuild/rules_android, rules_cc, rules_java, rules_pythongoogle/protobuf. rules_proto là 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 tập hợp 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 tập hợp đó dự kiến rốt cuộc sẽ phụ thuộc vào và tải chúng tương tự như các tập quy tắc khác chưa từng thuộc Bazel.

Bazel 8 cũng sẽ cải thiện các quy tắc mở rộng hiện có, các API quy tắc phụ và đá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 macro cũ, Bazel chỉ có rất ít thông tin chi tiết về việc sử dụng macro tượng trưng để giúp người dùng tránh những những sai lầm 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 khả 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

  • Ánh xạ đường dẫn đầu ra tiếp tục ổn định: hứa hẹn lưu vào bộ nhớ đệm từ xa tốt hơn hiệu suất và tốc độ tăng trưởng 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 với cờ mặc định mà không 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, 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ờ một trong các phần phụ thuộc bên ngoài). Với Skyfocus, Bazel sẽ mang lại phương pháp thử nghiệm để loại bỏ trạng thái tăng dần không cần thiết và giảm bộ nhớ của Bazel mà 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ố vùng nhớ khối xếp được giữ lại. Vùng nhớ khối xếp cao nhất là một khả năng, nhưng không được đưa vào 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 cách tiếp cận đơn giản hơn và được duy trì hiệu quả hơn để tăng dần 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 gia tăng để hỗ trợ trình bổ trợ JetBrains mới nhất bản phát hành.

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. Các mức độ ưu tiên có thể thay đổi theo ý kiến của nhà phát triển và khách hàng phản hồi mới hoặ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ả nội dung cập nhật đối với 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