개요
Bazel 프로젝트는 사용자의 요구사항에 따라 지속적으로 발전하고 있습니다. 핵심 제품의 성능을 유지, 리팩터링, 개선하는 동시에 기능을 개발하고 지원을 제공합니다.
이번 변경을 통해 오픈소스 커뮤니티에 최신 정보를 제공하고 커뮤니티를 참여시킬 수 있기를 바랍니다. 이 로드맵에서는 현재 이니셔티브와 Bazel 개발의 미래에 대한 예측을 설명하여 현재 우선순위와 진행 중인 프로젝트를 파악할 수 있습니다.
이 로드맵은 목표를 스냅샷으로 보여주며 보장으로 간주해서는 안 됩니다. 우선순위는 개발자 및 고객 의견 또는 새로운 시장 기회에 따라 변경될 수 있습니다.
이 로드맵의 업데이트를 비롯한 새로운 기능에 대한 알림을 받으려면 Google 그룹 커뮤니티에 가입하세요.
4분기 - Bazel 6.0 출시
4분기에는 새로운 장기 지원 (LTS) 버전인 Bazel 6.0이 출시됩니다. Bazel 6.0에는 종속 항목 관리, Android 개발 등을 위한 강력하고 커뮤니티에서 요청한 새로운 기능이 포함될 예정입니다.
Bzlmod: 외부 종속 항목 관리 시스템
Bzlmod는 전이 종속 항목을 자동으로 해결하므로 프로젝트가 빠르고 리소스 효율적인 상태를 유지하면서 확장될 수 있습니다. Bazel 5.0에서 실험적으로 도입된 Bzlmod는 정식 버전으로 제공되며 다이아몬드 종속성 문제를 해결합니다.
- Bzlmod가 '실험적'에서 '정식 버전'으로 전환됨
rules\_jvm\_external
지원이 포함되어 사용자가 Java 프로젝트의 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 중앙 레지스트리에는 정기적인 커뮤니티 기여와 주요 Bazel 규칙 및 프로젝트 채택이 포함됩니다.
- Bzlmod가 Bazel 프로젝트 빌드를 위한 기본 도구가 됨
서명된 빌드
Bazel은 Google 키로 서명된 Windows 및 Mac용 신뢰할 수 있는 바이너리를 제공합니다. 이 기능을 사용하면 멀티 플랫폼 개발자/개발 운영팀이 Bazel 바이너리의 소스를 식별하고 악성 미확인 바이너리로부터 시스템을 보호할 수 있습니다.
표준화된 플랫폼 API
새로운 플랫폼 API는 다국어, 멀티 플랫폼 빌드의 아키텍처 구성을 표준화합니다. 이 기능을 사용하면 개발자가 대규모 빌드에서 비용이 많이 드는 개발 시간 오류와 복잡성을 줄일 수 있습니다.
분석 측정항목 빌드
Bazel 원격 분석은 분석 단계 시간 측정항목을 제공하여 개발자가 자체 빌드 성능을 최적화할 수 있도록 지원합니다.
'바이트 없는 빌드'를 사용한 원격 실행
바이트 없는 빌드는 Bazel이 필요한 아티팩트만 다운로드하도록 허용하여 성능을 최적화하므로 빌드가 네트워크 대역폭에서 병목 현상을 일으키지 않습니다. 원격 빌드를 위해 추가된 기능은 다음과 같습니다.
- 비동기 다운로드를 사용하여 종속 출력을 다운로드하는 즉시 로컬 및 원격 작업이 시작되도록 합니다.
- 심볼릭 링크 지원 추가
- 빌드가 완료되면 원격 작업에서 중간 출력 가져오기
*Copyright © 2022 JetBrains s.r.o. JetBrains 및 IntelliJ는 JetBrains s.r.o.의 등록 상표입니다.