Bazel 로드맵

문제 신고 소스 보기 나이틀리 · 8.3 · 8.2 · 8.1 · 8.0 · 7.6

Bazel은 여러분의 요구사항에 따라 계속 발전하고 있으며, 이에 따라 2025년 로드맵 업데이트를 공유하고자 합니다.

2025년 말에 Bazel 9.0 장기 지원 (LTS)이 제공될 예정입니다.

Bzlmod로의 완전한 전환

Bzlmod는 Bazel 7부터 Bazel의 표준 외부 종속 항목 시스템으로, 기존 WORKSPACE 시스템을 대체합니다. 2025년 3월 현재 Bazel 중앙 레지스트리에는 650개가 넘는 모듈이 호스팅되어 있습니다.

Bazel 9에서는 WORKSPACE 기능이 완전히 삭제되며 Bzlmod가 Bazel에서 외부 종속 항목을 도입하는 유일한 방법이 됩니다. 커뮤니티의 이전 비용을 최소화하기 위해 Google에서는 이전 가이드도구를 더욱 개선하는 데 집중할 예정입니다.

또한 가비지 수집 기능이 있는 개선된 공유 저장소 캐시 (#12227 참고)를 구현할 계획이며 Bazel 8로 백포트할 수도 있습니다. Bazel 중앙 레지스트리에서도 SLSA 증명 확인을 지원합니다.

Android, C++, Java, Python, Proto 규칙 이전

Bazel 8에서는 Android, Java, Python, Proto 규칙 지원을 Bazel 코드베이스에서 해당 저장소의 Starlark 규칙으로 이전했습니다. 마이그레이션을 용이하게 하기 위해 Bazel에 자동 로드 기능을 구현했으며, 이 기능은 --incompatible_autoload_externally--incompatible_disable_autoloads_in_main_repo 플래그로 제어할 수 있습니다.

Bazel 9에서는 기본적으로 자동 로드를 사용 중지하고 모든 프로젝트가 BUILD 파일에서 필요한 규칙을 명시적으로 로드하도록 할 계획입니다.

C++ 언어 지원 대부분을 Starlark로 다시 작성하고 Bazel 바이너리에서 분리하여 /rules_cc 저장소로 이동합니다. 이는 Bazel에 아직 남아 있는 마지막 주요 언어 지원입니다.

또한 C++, Java, Proto 규칙의 단위 테스트를 Starlark로 포팅하여 규칙 작성자의 속도를 높이기 위해 구현 옆의 저장소로 이동하고 있습니다.

Starlark 개선사항

Bazel은 심볼릭 매크로를 지연 평가할 수 있습니다. 즉, 선언된 타겟이 요청되지 않으면 심볼 매크로가 실행되지 않아 매우 큰 패키지의 성능이 개선됩니다.

Starlark에는 Python의 유형 주석과 유사한 실험적 유형 시스템이 있습니다. Bazel 9가 출시된 유형 시스템이 안정화될 것으로 예상됩니다.

구성 가능성

주요 목표는 빌드 플래그의 비용과 혼란을 줄이는 것입니다.

사용자가 빌드 및 테스트 플래그를 어디에 설정해야 하는지 알지 않아도 되는 새로운 프로젝트 구성 모델을 실험하고 있습니다. 따라서 $ bazel test //foofoo의 프로젝트 정책에 따라 올바른 플래그를 자동으로 설정합니다. 이 기능은 9.0에서 실험용으로 유지될 가능성이 높지만 안내 의견을 환영합니다.

플래그 범위 지정을 사용하면 프로젝트 경계를 벗어날 때 Starlark 플래그를 삭제하여 플래그가 필요하지 않은 전이 종속 항목의 캐싱을 중단하지 않도록 할 수 있습니다. 이렇게 하면 전환을 사용하는 빌드가 더 저렴하고 빨라집니다. 다음은 예입니다. 실행 구성에 전파되는 플래그를 제어하는 아이디어를 확장하고 있으며, 플래그를 전파해야 하는 종속 항목 가장자리를 결정하기 위해 맞춤 Starlark와 같은 더욱 유연한 지원을 고려하고 있습니다.

내장 언어 플래그를 Bazel에서 Starlark로 이동하는 작업의 우선순위를 높이고 있습니다. Starlark에서는 관련 규칙 정의와 함께 사용할 수 있습니다.

원격 실행 개선사항

병렬 처리를 늘려 원격 실행 속도를 높이는 비동기 실행 지원을 추가할 계획입니다.


로드맵 업데이트를 확인하고 계획된 기능을 논의하려면 slack.bazel.build에서 커뮤니티 Slack 서버에 참여하세요.

이 로드맵은 Bazel 9.0에 대한 팀의 의도를 커뮤니티에 알리기 위한 것입니다. 우선순위는 개발자 및 고객 의견 또는 새로운 시장 기회에 따라 변경될 수 있습니다.