Lộ trình của Bazel

Báo cáo sự cố Xem nguồn

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ẻ nội dung cập nhật năm 2024 của mình.

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 phát triển của Bazel, giúp bạn nắm được các ưu tiên hiện tại và các dự án đang thực hiệ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 (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 đâ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 dự án mở rộng quy mô mà vẫn duy trì tốc độ nhanh và tiết kiệm tài nguyên.

Với Bazel 8, theo mặc định, chúng tôi sẽ tắt tính năng hỗ trợ WORKSPACE (bạn vẫn có thể bật tính năng này bằng --enable_workspace); và tính năng hỗ trợ Bazel 9 WORKSPACE sẽ bị loại bỏ. 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 để 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, vận chuyển bằng Bazel 7.1)
  • Bộ nhớ đệm của kho lưu trữ dùng chung cải tiến (xem #12227).
  • Hỗ trợ chế độ ngoại tuyến và nhà cung cấp – 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).
  • MODULE.bazel đã phân đoạn (#17880)
  • Cho phép ghi đè kho lưu trữ được tạo bằng tiện ích mô-đun (#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ợ 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 dễ dàng gỡ lỗi bỏ lỡ bộ nhớ đệm do một nhật ký thực thi nhỏ gọn mới, giảm 100 lần kích thước và chi phí thời gian chạy đáng kể (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 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, đồng thời tách riêng những quy tắc đó 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 các tập hợp 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. 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 từ kho lưu trữ của chúng. Tất cả người dùng của các tập hợp quy tắc đó dự kiến cuối cùng sẽ phụ thuộc vào kho lưu trữ của chúng và tải các tập hợp đó tương tự như các tập hợp quy tắc khác không bao giờ thuộc Bazel.

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

Các 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ũ, mà Bazel chỉ có thông tin chi tiết hạn chế về thông tin chi tiết, macro tượng trưng giúp người dùng tránh được các sai lầm 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 giúp chúng tôi không dùng native.existing_rules() nữa.

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

  • Việc ánh xạ đường dẫn đầu ra sẽ tiếp tục ổn định: hứa hẹn sẽ cải thiện hiệu suất bộ nhớ đệm từ xa và tốc độ tạo bản dựng cho những 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 xây dựng mục tiêu bằng cờ mặc định mà không cần phải đặt bazelrcs.
  • Không thực hiện lại quá trình 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 để 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 tập hợp con các tệp nguồn nhỏ (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ẽ 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 cung cấp trải nghiệm bản dựng gia tăng nhanh như cũ.

Phạm vi ban đầu chỉ nhằm mục đích cải thiện chỉ số vùng nhớ khối xếp được giữ lại. Bạn có thể giảm vùng nhớ khối xếp cao nhất, 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 và được duy trì hiệu quả hơn để dần dần triển khai 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 hộp cát.

Hỗ trợ IntelliJ IDEA của Bazel-JetBrains*

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 nhắm đến mục tiêu tổng quan nhanh và bạn không nên đảm bảo điều này. 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 theo 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ả nội dung cập nhật cho 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