Bazel 로드맵

문제 신고 소스 보기

개요

Bazel 커뮤니티에 새해 복 많이 받으세요. 새해를 맞이하여 2023년 로드맵을 자세히 안내할 계획입니다. 작년에 Google은 Bazel 6.0 계획을 포함한 2022년 로드맵을 공개했습니다. 제공된 로드맵이 개발자 여러분의 빌드 도구 요구사항에 도움이 되길 바랍니다. Bazel 프로젝트가 여러분의 필요에 따라 계속 발전함에 따라 2023년 업데이트를 공유하고자 합니다.

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

Bazel 7.0 출시

2023년 말에 Bazel 7.0 장기 지원 (LTS)을 제공할 계획입니다. Bazel 7.0을 통해 진행 중인 많은 항목을 제공하고 사용자가 요청한 기능 개선 작업을 계속하는 것을 목표로 합니다.

크로스 플랫폼 캐시 공유 개선

주로 Java/Kotlin 및 Android 개발을 위해 여러 빌드 로컬 (Mac) 및 원격 (Linux) 빌드 플랫폼에서 캐시된 아티팩트를 공유할 수 있으므로 성능과 캐시 사용이 향상됩니다.

Bazel을 사용한 Android 앱 빌드

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

원격 실행 개선

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

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

Bzlmod는 전이 종속 항목을 자동으로 해결하므로 빠르고 리소스 효율성을 유지하면서 프로젝트를 확장할 수 있습니다. Bazel 7.0에는 다음을 포함하여 Bazel의 외부 종속 항목 관리 기능에 대한 여러 가지 향상된 기능이 포함되어 있습니다.

  • Bazel의 외부 종속 항목 관리를 위해 기본적으로 Bzlmod가 사용 설정되었습니다.
  • 잠금 파일 지원 - Bzlmod로 밀폐 빌드 사용
  • 공급업체/오프라인 모드 지원 - 사용자가 사전에 다운로드된 종속 항목이 있는 빌드를 실행할 수 있음
  • 완벽한 저장소 캐시 지원 (캐싱을 통해 아티팩트 다운로드뿐만 아니라 최종 저장소 콘텐츠도 다운로드)
  • Bazel Central Registry는 정기적인 커뮤니티 기여 및 주요 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 앱 변경사항을 신속하게 개발, 테스트, 배포할 수 있습니다.

소프트웨어 재료명세서 데이터 생성 (SBOM) 및 OSS 라이선스 규정 준수 도구

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

서명된 빌드

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

Java, 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의 등록 상표입니다.