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가 '실험용'에서 '정식 버전'으로 변경됨
  • 사용자가 Java 프로젝트의 Maven 종속 항목을 다운로드할 수 있도록 rules\_jvm\_external 지원이 포함되었습니다.
  • 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 리소스 처리의 멀티플렉스 작업자

선택적 도구 모음

Google의 개발자 만족도 설문조사에 따르면 규칙 작성자는 도구 모음 개발에 대한 지원을 원한다고 답했습니다. 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로 이전 및 지원
  • Starlark 언어로의 번역을 포함한 Android 규칙 업데이트
  • App Bundle 지원
  • 최신 NDK 버전 지원
  • 테스트 코드 적용 범위

OSS 라이선스 규정 준수 도구

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

  • 특정 타겟이 사용하는 패키지를 감사하는 기능
  • 조직별 라이선스 규정 준수 검사를 구축할 수 있는 기능

GitHub에서 진행 중인 rules_license 구현을 참고하세요.

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

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

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

서명된 빌드

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

표준화된 플랫폼 API

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

분석 측정항목 빌드

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

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

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

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

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