Bazel 로드맵

문제 신고 소스 보기 Nightly · 8.0 7.4 . 7.3 · 7.2 · 7.1 · 7.0 · 6.5

개요

Bazel 프로젝트는 사용자의 요구에 따라 계속해서 발전하고 있습니다. 2024년 업데이트를 공유합니다.

이 로드맵에서는 현재의 이니셔티브와 향후 Bazel 개발에 대한 예측을 설명하여 현재의 우선순위와 진행 중인 프로젝트를 파악할 수 있도록 합니다.

Bazel 8.0 출시

2024년 말에 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 7.1에 제공됨)
  • 종속 항목 버전 업데이트 전반에서 작업의 캐시 가능성을 개선하기 위해 표준 저장소 이름을 생성하는 스키마를 개선했습니다. (#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에 많은 상태를 보유합니다. 그러나 개발자는 소스 파일의 일부 하위 집합만 변경하는 경우가 많습니다 (예: 외부 종속 항목 중 하나는 거의 변경하지 않음). Skyfocus를 통해 Bazel은 동일한 빠른 증분 빌드 환경을 제공하면서 불필요한 증분 상태를 삭제하고 Bazel의 메모리 사용량을 줄이는 실험적인 방법을 제공합니다.

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

기타

  • Android 애플리케이션을 점진적으로 배포하는 더 간단하고 유지 관리가 용이한 접근 방식인 모바일 설치 v3
  • 저장소 캐시 및 Bazel의 install_base의 가비지 컬렉션
  • 샌드박스 오버헤드가 줄었습니다.

Bazel-JetBrains* IntelliJ IDEA 지원

최신 JetBrains 플러그인 출시를 지원하기 위한 점진적 IntelliJ 플러그인 업데이트

이 로드맵은 타겟을 스냅샷으로 보여주며 보장으로 간주해서는 안 됩니다. 우선순위는 개발자 및 고객 의견 또는 새로운 시장 기회에 따라 변경될 수 있습니다.

이 로드맵 업데이트를 비롯한 새로운 기능에 대한 알림을 받으려면 Google 그룹 커뮤니티에 가입하세요.

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