Bazel이 사용자의 요구에 맞춰 계속 발전함에 따라 2025년 로드맵 업데이트를 공유하고자 합니다.
2025년 말에 Bazel 9.0 장기 지원 (LTS)을 제공할 계획입니다.
Bzlmod로의 전체 전환
Bzlmod는 Bazel 7 이후 Bazel의 표준 외부 종속 항목 시스템으로, 기존 WORKSPACE 시스템을 대체합니다. 2025년 3월 현재 Bazel 중앙 레지스트리에는 650개가 넘는 모듈이 호스팅되어 있습니다.
Bazel 9에서는 WORKSPACE 기능이 완전히 삭제되며 Bzlmod가 Bazel에서 외부 종속 항목을 도입하는 유일한 방법이 됩니다. 커뮤니티의 마이그레이션 비용을 최소화하기 위해 마이그레이션 가이드와 도구를 더욱 개선하는 데 중점을 둘 것입니다.
또한 가비지 컬렉션이 포함된 개선된 공유 저장소 캐시 (#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 //foo는
foo의 프로젝트 정책에 따라 올바른 플래그를 자동으로 설정합니다. 이는 9.0에서 실험용으로 유지될 가능성이 높지만 안내 의견을 보내주시면 감사하겠습니다.
플래그 범위 지정을 사용하면 프로젝트 경계를 벗어날 때 Starlark 플래그를 삭제할 수 있으므로 필요하지 않은 전이적 종속 항목의 캐싱이 중단되지 않습니다. 이렇게 하면 전환을 사용하는 빌드가 더 저렴하고 빨라집니다. 다음은 그 예입니다. 실행 구성으로 전파되는 플래그를 제어하는 아이디어를 확장하고 있으며, 어떤 종속 항목 가장자리가 플래그를 전파해야 하는지 결정하기 위해 맞춤 Starlark와 같은 더 유연한 지원도 고려하고 있습니다.
기본 제공 언어 플래그를 Bazel에서 관련 규칙 정의와 함께 사용할 수 있는 Starlark로 이동하기 위한 노력을 우선순위로 지정하고 있습니다.
원격 실행 개선사항
비동기 실행 지원을 추가하여 병렬 처리를 늘려 원격 실행 속도를 높일 계획입니다.
로드맵 업데이트를 확인하고 계획된 기능에 관해 논의하려면 커뮤니티 Slack 서버에 slack.bazel.build에서 가입하세요.
이 로드맵은 Bazel 9.0에 대한 팀의 의도를 커뮤니티에 알리기 위한 것입니다. 우선순위는 개발자 및 고객 의견 또는 새로운 시장 기회에 따라 변경될 수 있습니다.