최종 확인: 2020년 4월 21일 (업데이트 기록)
담당자: 로랑LB
목표
Google의 목표는 Bazel을 더 확장 가능하게 만드는 것입니다. 사용자는 자체 규칙을 쉽게 구현하고 새로운 언어와 도구를 지원할 수 있어야 합니다. Google은 이러한 규칙을 작성하고 유지하는 환경을 개선하고자 합니다.
Google은 다음 두 가지 영역에 중점을 둡니다.
- 언어와 API를 간단하면서도 강력하게 만드세요.
- 코드를 읽고, 쓰고, 업데이트하고, 디버깅하고, 테스트하기 위한 더 나은 도구를 제공합니다.
2020년 2분기
빌드 상태 및 권장사항:
- P0. 이름이 없는 매크로를 사용하지 않도록 하고 이름이 고유한 문자열 리터럴인지 확인합니다. 이 작업은 Google 코드베이스에 중점을 두지만 공개적으로 제공되는 도구에 영향을 미칠 수 있습니다.
- P0. 선택 및 변수와 관련하여 Buildozer 명령어를 안정적으로 만듭니다.
- P1. Buildifier가 주석으로 인해 정렬하지 않는 목록에서 중복을 삭제하도록 합니다.
- P1. 사소한 표현식을 인라인으로 처리하도록 권장하도록 Buildifier 린터 업데이트
- P2. native.existing_rules의 사용 사례를 연구하고 대안을 제안하세요.
- P2. 인트로 파일의 사용 사례를 연구하고 대안을 제안합니다.
성능:
- P1. 플랫 환경과 바이트 코드 컴파일을 사용하여 Starlark 인터프리터 최적화
기술 부채 감소:
- P0. @bazel_tools 아래에 네이티브 기호를 Starlark로 포팅하는 기능 추가
- P1. 사용되지 않는 플래그 삭제 (일부는 Google에서 여전히 사용되므로 먼저 코드베이스를 정리해야 함):
incompatible_always_check_depset_elements,incompatible_disable_deprecated_attr_params,incompatible_no_support_tools_in_action_inputs,incompatible_new_actions_api - P1. 다음 플래그가 Bazel 4.0에서 전환될 수 있는지 확인합니다.
incompatible_disable_depset_items,incompatible_no_implicit_file_export,incompatible_run_shell_command_string,incompatible_restrict_string_escapes - P1. lib.syntax 작업 완료 (API 정리, Bazel과 분리)
- P2. Bazel의 Java 패키지에 대한 사소한 수정의 빌드+테스트 지연 시간을 50% 줄입니다.
커뮤니티:
rules_python은 커뮤니티에서 활발하게 사용하고 잘 관리하고 있습니다.- rules_jvm_external 지속적 지원 (미해결 풀 요청 없음, 문제 분류, 출시).
- Bazel 문서 인프라 유지관리: bazel-website, bazel-blog, docs 전반에서 CSS 스타일 중앙 집중화 및 표준화
- Bazel 문서: 회귀를 방지하기 위해 e2e 문서 사이트 빌드용 CI 테스트 추가
2020년 1분기
빌드 상태 및 권장사항:
- 타겟이
bazel query를 통해 내보낼 수 있도록 매크로 호출 스택을 추적하도록 허용 --incompatible_no_implicit_file_export구현- 지원 중단된 depset API 삭제 (#5817, #10313, #9017)
- Buildifier에 교차 파일 분석기 추가, 지원 중단된 함수 검사 구현
성능:
- Bazel의 자체 Java 기반 테스트를 2배 더 빠르게 만듭니다.
- Starlark CPU 프로파일러 구현
기술 부채 감소:
- 호환되지 않는 플래그 8개를 삭제합니다 (플래그를 뒤집은 후).
- lib.syntax 정리 작업 완료 (종속 항목 분리)
- Starlark 최적화: 플랫 환경, 바이트 코드 컴파일
- 가능한 경우 분석 단계에서 모든 직렬화 삭제
- lib.packages를 간소화/최적화하는 계획 수립
커뮤니티:
- 모든 Bazel 관련 용어의 정의가 포함된 용어집 게시