Bazel 로드맵

문제 신고 소스 보기

개요

Bazel 커뮤니티의 새해가 밝았습니다. 새해를 맞이하여 2023년 로드맵의 세부정보를 가져올 계획입니다. 작년에 Bazel 6.0 계획을 통해 2022년 로드맵을 게시했습니다. 이 로드맵에 빌드 도구의 니즈가 반영되었기를 바랍니다. 귀사의 요구사항에 따라 Bazel 프로젝트가 계속 발전함에 따라 2023년 업데이트를 공유하고자 합니다.

이러한 변경사항을 통해 오픈소스 커뮤니티에 지속적으로 정보를 제공하고 포함시켜 나가고자 합니다. 이 로드맵은 Bazel 개발의 미래에 대한 현재 이니셔티브와 예측을 설명하여 현재 우선순위와 진행 중인 프로젝트에 대한 정보를 제공합니다.

Bazel 7.0 출시

2023년 말에 Bazel 7.0 장기적 지원 (LTS)을 지원할 예정입니다. Bazel 7.0에서는 진행 중인 많은 항목을 전달하고, 사용자가 요청해온 기능 개선을 위해 계속 노력하고 있습니다.

교차 플랫폼 캐시 공유 개선

캐시된 아티팩트를 주로 자바/Kotlin 및 Android 개발을 위한 다양한 빌드 로컬 (Mac) 및 원격 (Linux) 빌드 플랫폼에서 공유할 수 있도록 하여 성능을 향상하고 캐시를 효율적으로 사용합니다.

Bazel을 사용한 Android 앱 빌드

매니페스트 및 리소스 병합이 v30.1.3으로 업데이트되어 Android 앱 개발자가 tools:node="merge" 같은 새로운 매니페스트 병합 기능을 사용할 수 있습니다.

원격 실행 개선

Bazel 7.0은 비동기 실행을 지원하며, 플래그 --jobs를 사용하여 병렬 처리를 통해 원격 실행의 속도를 높입니다.

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

Bzlmod는 전이 종속 항목을 자동으로 해결하므로 빠르고 확장 가능한 방식으로 프로젝트를 확장할 수 있습니다. Bazel 7.0에는 Bazel의 외부 종속 항목 관리 기능에 대한 다음과 같은 여러 개선사항이 포함되어 있습니다.

  • Bzlmod가 Bazel의 외부 종속 항목 관리에 기본적으로 사용 설정됨
  • 잠금 파일 지원 - Bzlmod로 밀폐 빌드 가능
  • 공급업체/오프라인 모드 지원 — 사용자가 사전 다운로드한 종속 항목이 있는 빌드를 실행할 수 있음
  • 저장소 캐시 지원 완료 (아티팩트를 다운로드할 뿐만 아니라 최종 저장소 콘텐츠도 저장)
  • Bazel 중앙 레지스트리에는 정기적인 커뮤니티 기여 및 주요 Bazel 규칙 및 프로젝트 채택이 포함됩니다.

빌드 분석 측정항목

Bazel 7.0은 개발자가 자체 빌드 성능을 최적화할 수 있도록 분석 단계 시간 측정항목을 제공합니다.

기본적으로 바이트를 사용 설정하지 않고 빌드

바이트가 없는 빌드는 중간 아티팩트의 다운로드를 방지하고 네트워크 대역폭의 빌드 병목 현상을 방지하여 성능을 최적화합니다. 추가된 기능은 다음과 같습니다.

Skymeld로 생산성 높이기

Bazel 7.0에는 다중 타겟 빌드의 실제 경과 시간을 줄이는 평가 모드인 Skymeld가 도입되었습니다. Skymeld는 특히 여러 최상위 타겟이 있는 빌드의 경우 빌드 속도를 개선하기 위해 분석 및 실행 단계 사이의 장벽을 제거합니다. 그러나 단일 타겟 빌드의 경우 큰 차이가 예상되지 않습니다.

Bazel 생태계 및 도구

Bazel을 사용한 Android 앱 빌드

  • Android 기본 규칙을 Starlark로 이전: Bazel 7.0의 경우 Android 규칙을 Starlark로 이전하여 개발을 Bazel 자체에서 분리하고 커뮤니티 참여를 더욱 효과적으로 사용 설정합니다. 또한 이러한 규칙을 핵심 Bazel 바이너리와 독립적으로 만들어 더 자주 출시할 수 있습니다.
  • Android 규칙을 Starlark로 이전
  • R8 지원: Android 앱 개발자가 R8 업데이트 최적화를 사용할 수 있습니다.
  • 모바일 설치: Android 앱 개발자가 업데이트된 버전의 모바일 설치를 통해 모든 Android 앱 변경사항을 신속하게 개발, 테스트, 배포할 수 있습니다.

Software Bill of Materials 데이터 생성 (SBOM) 및 OSS 라이선스 규정 준수 도구

Bazel을 사용하면 개발자는 SBOM을 생성하는 데 도움이 되는 데이터를 생성할 수 있습니다. 이 데이터는 텍스트 또는 JSON 형식으로 출력되며 SPDX 또는 CycloneDX 사양을 충족하도록 쉽게 형식을 지정할 수 있습니다. 또한 Bazel 모듈이 사용할 수 있는 라이선스를 선언하는 규칙과 이러한 선언을 중심으로 프로세스를 빌드하는 도구도 제공합니다. GitHub에서 진행 중인 rules_license 구현을 참고하세요.

서명된 빌드

Bazel은 Google 키로 서명된 Windows 및 Mac용으로 신뢰할 수 있는 바이너리를 제공합니다. 이 기능을 사용하면 다중 플랫폼 개발자/dev-ops가 Bazel 바이너리의 소스를 식별하고 악의적이거나 확인되지 않은 바이너리로부터 시스템을 보호할 수 있습니다.

자바, C++, Python 규칙을 Starlark로 이전

자바, C++, Python 규칙 세트를 Starlark로 이전합니다. 이러한 노력을 통해 Bazel 사용자는 Bazel 바이너리 코드베이스가 아닌 규칙 세트만 포크할 수 있습니다.

  • 필요에 따라 규칙 업데이트 및 맞춤설정
  • Bazel과 독립적으로 규칙 업데이트하기

Bazel-JetBrains* IntelliJ IDEA 지원

최신 JetBrains 플러그인 지원을 위한 증분 IntelliJ 플러그인 업데이트

이 로드맵은 스냅샷을 타겟팅하므로 보장해서는 안 됩니다. 우선순위는 개발자 및 고객의 피드백이나 새로운 시장 기회에 따라 변경될 수 있습니다.

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

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