Bazel 로드맵

개요

Bazel 프로젝트는 개발자의 요구에 따라 끊임없이 발전하며 기능을 개발하고 지원을 제공하는 한편 핵심 제품의 성능을 유지, 리팩터링, 개선합니다.

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

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

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

Q4 — Bazel 6.0 출시

4분기에는 새로운 장기적 지원 (LTS) 버전인 Bazel 6.0이 출시됩니다. Bazel 6.0은 종속 항목 관리, Android로 개발 등을 위해 커뮤니티에서 요청했던 강력한 새 기능을 포함할 계획입니다.

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

Bzlmod는 전이 종속 항목을 자동으로 해결하므로 빠르고 리소스 효율성을 유지하면서 프로젝트를 확장할 수 있습니다. Bazel 5.0에서 실험용으로 도입된 Bzlmod가 정식 버전으로 출시되어 다이아몬드 종속 항목 문제를 해결하는 솔루션을 제공합니다.

  • Bzlmod에서 '실험용'에서 '정식 버전'으로 변경
  • rules\_jvm\_external 지원이 포함되어 사용자가 자바 프로젝트용 Maven 종속 항목을 다운로드할 수 있습니다.
  • Bzlmod 마이그레이션 가이드는 Bzlmod를 도입하려는 팀에 도구, 스크립트, 문서를 제공합니다.
  • Bazel 중앙 저장소는 핵심 Bazel BUILD 규칙 (rules\_jvm\_external, rules\_go, rules\_python, rules\_nodejs)과 Bzlmod에 필요한 주요 종속 항목을 호스팅합니다.

이러한 개발에 관한 자세한 내용은 Bzlmod 커뮤니티 업데이트를 시청하거나 원본 디자인 문서를 참고하세요.

Bazel을 사용한 Android 앱 빌드

Bazel 6.0에는 개선된 도구와 병합된 커뮤니티 기능 기여가 포함됩니다. 더 많은 채택이 이루어지고 코드베이스가 증가할 것으로 예상하면서 Bazel 팀은 Android 빌드 도구를 Bazel Android 규칙과 통합하는 것에 우선순위를 둘 것입니다.

  • D8을 v. 3.3.28로 업데이트하고 기본 dexer로 설정합니다.
  • 다음 지원을 포함하여 5.X에 추가된 주요 커뮤니티 기능 참여에 병합되었습니다.
    • D8을 사용하는 영구 작업자
    • D8을 사용한 디슈가링
    • Android 매니페스트에서 'uses-permissions' 태그 병합
    • Android 리소스 처리 시 멀티플렉스 작업자

선택적 도구 모음

개발자 만족도 설문조사에 따르면 규칙 작성자가 도구 모음의 추가 개발 지원을 원하는 것으로 나타났습니다. Bazel 6.0은 다른 플랫폼용 대체 구현과 함께 제공되는 경우 작성자가 선택적 고성능 도구 모음을 사용하여 규칙을 작성할 수 있게 해줍니다.

Bazel-JetBrains* IntelliJ IDEA 지원

JetBrains는 Bazel과 제휴하여 Bazel IntelliJ IDEA 플러그인을 공동 유지관리하여 커뮤니티 관리 역량을 강화하고 기능 요청 및 개발을 위한 역량을 확대한다는 목표를 지원하고 있습니다.

  • IntelliJ 플러그인 v. 2022.2에서 최신 JetBrains 플러그인 출시 지원
  • 원격 개발과의 호환성 향상
  • Scala 지원과 같은 진행 중인 기능에 대한 커뮤니티 주도 개발을 강화합니다.

이 개발에 관한 자세한 내용은 Bazel-JetBrains 블로그 공지를 참고하세요.

향후 개발

앞으로 Bazel팀은 개발을 시작했거나 2023년과 그 이후부터 다음 기능의 우선순위를 정할 예정입니다.

Bazel의 Android 빌드 규칙 개선

빌드, 테스트 및 배포의 워크플로에 중점을 두고 Android 앱 개발 환경에 계속 투자하세요.

  • R8로 이전 및 R8 지원
  • Starlark 언어로의 번역을 포함한 Android 규칙 업데이트
  • App Bundle 지원
  • 최신 NDK 버전 지원
  • 테스트 코드 적용 범위

OSS 라이선스 규정 준수 도구

개발자들은 포함된 패키지의 가용성과 보안을 확인하기 위해 강력한 라이선스 규정 준수 검사기를 요청했습니다. 이 프로젝트는 특정 소프트웨어 구성요소와 관련된 규정 준수 및 라이선스 위험을 식별하고 완화하는 데 도움이 되는 규칙과 도구를 제공합니다. 타겟 기능은 다음과 같습니다.

  • 특정 대상에서 사용하는 패키지를 감사하는 기능
  • 조직별 라이선스 규정 준수 검사를 빌드할 수 있습니다.

GitHub에서 진행 중인 rules_license 구현을 확인해 보세요.

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

출시 시점에 Bzlmod는 전이 종속 항목의 확장성과 안정성을 개선합니다. 향후 3년 동안 Bzlmod는 WORKSPACE를 기본 Bazel 작업공간 종속 항목 관리 하위 시스템으로 대체하는 것을 목표로 합니다. 대상 기능은 다음과 같습니다.

  • 밀폐 빌드 지원
  • 공급업체/오프라인 모드에서 버전이 지정된 참조 규칙을 로컬 사본에 고정
  • Bazel Central Registry에는 정기적인 커뮤니티 기여와 주요 Bazel 규칙 및 프로젝트 채택이 포함됩니다
  • Bzlmod가 Bazel 프로젝트 빌드를 위한 기본 도구가 됨

서명된 빌드

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

표준화된 플랫폼 API

새로운 Platforms API는 다국어, 다중 플랫폼 빌드를 위한 아키텍처 구성을 표준화합니다. 이 기능을 사용하면 개발자는 대규모 빌드에서 비용이 많이 드는 개발 시간 오류와 복잡성을 줄일 수 있습니다.

분석 측정항목 빌드

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

'바이트 없이 빌드'를 통한 원격 실행

바이트가 없는 빌드는 Bazel이 필요한 아티팩트만 다운로드하도록 허용하여 성능을 최적화하여 빌드가 네트워크 대역폭에서 병목 현상을 일으키는 것을 방지합니다. 원격 빌드에 추가된 기능은 다음과 같습니다.

  • 비동기식 다운로드를 사용하여 종속 출력을 다운로드하는 즉시 로컬 및 원격 작업이 시작되도록 합니다.
  • Symlinks 지원 추가
  • 빌드가 완료되면 원격 작업에서 중간 출력을 가져옵니다.

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