Bazel 로드맵

문제 신고 <ph type="x-smartling-placeholder"></ph> 소스 보기 1박 · 7.2 · 7.1 · 7.0 · 6.5 · 6.4

개요

Bazel 프로젝트가 귀사의 니즈에 따라 계속 발전함에 따라 Google에서는 2024년 업데이트를 공유해 주세요

이 로드맵은 현재 이니셔티브와 미래에 대한 예측을 설명합니다 Bazel 개발로, 현재 우선순위와 현재 우선순위에 대한 가시성 제공 살펴보겠습니다

Bazel 8.0 출시

Bazel 8.0에 장기적인 지원이 제공될 예정입니다. (LTS)를 제공합니다. 다음 기능이 구현될 예정입니다.

Bzlmod: 외부 종속 항목 관리 시스템

Bzlmod가 자동으로 전이적 리졸브 종속 항목을 지원하므로 프로젝트를 확장하고 속도를 유지하고 효율적입니다

Bazel 8에서는 WORKSPACE 지원이 기본적으로 사용 중지됩니다 (계속해서 --enable_workspace)를 사용하여 사용 설정할 수 있음) Bazel 9 Workspace 지원이 중단됩니다 Bazel 7.1부터 --noenable_workspace하여 새 동작을 선택합니다.

Bazel 8.0에는 Bazel의 외부 종속 항목 관리 다음과 같은 기능을 지원합니다.

  • 새 플래그 --enable_workspacefalse로 설정하여 완전히 WORKSPACE 기능을 사용 중지하세요.
  • 새 디렉터리 감시 API( #21435, Bazel에서 배송됨 참조).
  • 더 나은 표준 저장소 이름을 생성하기 위한 스키마 개선 작업의 캐시 가능성을 제공합니다. (#21316, Bazel에서 배송됨 7.1)
  • 개선된 공유 저장소 캐시( #12227)을 참조하세요.
  • 공급업체 및 오프라인 모드 지원 — 사용자가 미리 다운로드한 종속 항목( #19563)을 입력합니다.
  • 잠금 파일의 병합 충돌 감소 (#20396)
  • 분할된 MODULE.bazel (#17880)
  • 모듈 확장 프로그램 생성 저장소 재정의 허용 (#19301)
  • 문서 개선 (예: #18030 #15821) 이전 가이드 및 이전 도구가 있습니다.

원격 실행 개선

  • 비동기 실행에 대한 지원을 추가하여 --jobs 플래그로 병렬 처리 증가
  • 새로운 간단한 실행 로그로 캐시 부적중을 더 쉽게 디버그할 수 있습니다. 크기를 100배 줄이고 런타임 오버헤드를 크게 줄일 수 있습니다 (자세한 내용은 #18643)을 참조하세요.
  • 디스크 캐시에 대한 가비지 컬렉션을 구현합니다 (자세한 내용은 #5139)를 참조하세요.
  • 임의의 빌드의 지연 다운로드를 허용하도록 원격 출력 서비스 구현 출력( #20933)을 참조하세요.

Android, C++, Java, Python, Proto 규칙 이전

Android, C++, Java, Python 규칙 세트를 전용 Bazel 릴리스에서 분리할 수 있습니다 이러한 노력을 통해 Bazel 사용자와 규칙 작성자를

  • Bazel과 독립적으로 규칙을 업데이트합니다.
  • 필요에 따라 규칙을 업데이트하고 맞춤설정합니다.

규칙 세트의 새 위치는 bazelbuild/rules_android가 됩니다. rules_cc, rules_java, rules_python, google/protobuf rules_proto: 지원 중단될 예정입니다

Bazel 8은 규칙 세트가 있어야 합니다. 전체 이러한 규칙 집합의 사용자는 결국에는 다른 규칙 세트와 유사하게 로드하여 Bazel을 사용하세요.

또한 Bazel 8은 기존 확장 규칙과 하위 규칙 API를 개선하고 비실험용으로 표시합니다.

Starlark 개선

  • 기호화된 매크로는 사용자에게 친숙한 매크로를 작성하는 새로운 방법입니다. 사용자 BUILD명, 매크로 작성자 및 도구 기존 매크로와 비교하면 Bazel은 기호화된 매크로에 대한 유용한 정보만 제한적입니다. 이는 사용자가 일반적인 함정에 빠지고 권장사항을 시행합니다.
  • 패키지 파이널라이저는 맞춤 패키지 유효성 검사 로직입니다. 이들은 지원 중단을 돕기 위한 것입니다. native.existing_rules()

구성 가능성

  • 출력 경로 매핑의 지속적인 안정화: 원격 캐시 개선 성능 및 빌드 속도에 영향을 줄 수 있습니다.
  • 지정된 --platforms에 적합한 빌드 플래그를 자동으로 설정합니다.
  • 프로젝트 지원 플래그 조합 정의 및 자동 빌드 대상 기본 플래그를 사용하여 bazelrcs를 설정할 필요가 없습니다.
  • 빌드 플래그가 변경될 때마다 빌드 분석을 다시 실행하지 않습니다.

Project Skyfocus - 보관된 데이터 구조 최소화

Bazel은 빠른 증분 빌드를 위해 RAM에 많은 상태를 보유합니다. 하지만 개발자는 종종 소스 파일의 작은 하위 집합을 변경합니다 (예: 외부 종속 항목 중 하나). Bazel은 Skyfocus를 사용하여 불필요한 증분 상태를 삭제하고 Bazel의 메모리를 줄이는 실험용 방법 공간을 최대한 확보하면서도 동일한 빠른 증분 빌드 환경을 제공합니다.

초기 범위는 보관된 힙 측정항목만 개선하는 것을 목표로 합니다. 최대 힙 감소가 가능하기는 하지만 초기 범위에는 포함되지 않습니다.

기타

  • 모바일 설치 v3: 더 간단하고 효과적으로 유지관리할 수 있는 단계별 접근 방식 Android 애플리케이션을 배포할 수 있습니다
  • 저장소 캐시 및 Bazel의 install_base에 대한 가비지 컬렉션
  • 샌드박싱 오버헤드가 감소했습니다.

Bazel-JetBrains* IntelliJ IDEA 지원

최신 JetBrains 플러그인을 지원하도록 증분 IntelliJ 플러그인 업데이트 있습니다.

이 로드맵은 스냅샷을 대상으로 하며 이를 보장하는 것으로 간주해서는 안 됩니다. 우선순위는 개발자 및 고객에 따라 변경될 수 있음 새로운 시장 기회에 기대할 수 있습니다

이 로드맵에 대한 업데이트를 비롯한 새로운 기능에 대한 알림을 받으려면 Google 그룹 커뮤니티에서 확인할 수 있습니다.

*Copyright © 2022 JetBrains s.r.o. JetBrains 및 IntelliJ는 JetBrains s.r.o의 등록 상표입니다.